设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 464|回复: 12

[源码] 线条交点画圆

[复制链接]

已领礼包: 511个

财富等级: 财运亨通

发表于 2019-6-2 11:33:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
支持线条:*Line,Arc,Ellipse
线条交点画圆.gif

线条交点画圆.zip

1.03 KB, 下载次数: 48, 下载积分: D豆 -1 , 活跃度 1

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 511个

财富等级: 财运亨通

 楼主| 发表于 2019-6-12 11:55:46 | 显示全部楼层
你上面找的这个功能是:如果多线段或样条曲线自身有交点,在交点处画圆,和我的功能不一样。
这里把我的代码上传,以供测试
(defun c:mjd()
        (setvar "OSMODE" 0)
        (if (= (getstring (strcat "线条是否包含圆,y/n<" "n" ">:")) "y")
                (setq sss (ssget '((0 . "*Line,Arc,circle,Ellipse"))) jdst nil)
                (setq sss (ssget '((0 . "*Line,Arc,Ellipse"))) jdst nil))
        (setq n (sslength sss) i 0 ns 0)
        (if (> n 1)(progn
                (while (< i (- n 1))
                        (setq e1 (ssname sss i) j (1+ i))
                         (while (< j n)
                                (setq e2 (ssname sss j))
                                (if (setq jd (vlax-invoke (vlax-ename->vla-object e1)'IntersectWith (vlax-ename->vla-object e2) 0))
                                        (progn
                                                (setq m (length jd) jj 0)
                                                (while (< jj m)
                                                        (setq jd0 (list (nth jj jd)(nth (+ jj 1) jd)(nth (+ jj 2) jd)))
                                                        (setq jdst (cons jd0 jdst))
                                                        (setq jj (+ jj 3) ns (1+ ns))
                                                )        )        )
                                 (setq j (1+ j))                )
                        (setq i (1+ i))                )
                (setq ns (length jdst) i 0)
                (setq dis (getreal "\输入圆的半径:"))
                (while (< i ns)
                        (command "circle" (nth i jdst) dis)
                        (setq i (1+ i))        )
                ))
        (princ)
)
(prompt "\n多条线条交点集,命令:mjd")(princ)

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2019-6-3 08:58:30 | 显示全部楼层
2018版本好像用不了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2019-6-7 19:12:01 | 显示全部楼层
不是源码,一个lisp的网站很早就有这个源码了,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2019-6-7 19:44:59 | 显示全部楼层
VLX文件,浪费我一个B
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6466个

财富等级: 富甲天下

发表于 2019-6-9 00:10:09 | 显示全部楼层
再加一个pline
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 511个

财富等级: 财运亨通

 楼主| 发表于 2019-6-9 08:39:02 | 显示全部楼层
不知楼上什么意思,是说不支持pline么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2019-6-11 16:48:34 | 显示全部楼层
yangchao2005090 发表于 2019-6-7 19:12
不是源码,一个lisp的网站很早就有这个源码了,

求源码,可以修改圆大小的,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2019-6-11 16:56:14 | 显示全部楼层
[code="lisp] (setq rrno1 5)
;;函数名:zjhy(自交画圆)
;;功能:在多段线是线自相交处画圆圈标注      
;;注:多段线为纯线段,不含弧线
(defun c:zjhy(/ $i $j jiaodian lss nn ns os pt1 pt2 pt3 pt4)
  (setq lss (Vertexs (car(entsel))));获取定点表
  (setq rrno1 (ureal 0 "" "输入圆圈半径" rrno1))
  (setq nn 0)
(setq os (getvar "osmode"))
  (setvar "osmode" 0)(setvar "CMDECHO" 0)
  (setq ns (length lss));返回顶点个数
  (setq $i 0);循环初始
  (setq $j 2);嵌套循环初始
  (repeat (- ns 1);循环从第一点到倒数第二点
    (repeat (if(= $i 0)(1-(- ns $j))(- ns $j));循环到第一点(首点除外)
      (setq pt1(nth $i lss));0
      (setq pt2(nth (1+ $i) lss));1
      (setq pt3(nth $j lss));2
      (setq pt4(nth (if(=(1+ $j)ns)0(1+ $j)) lss));3(超过最后一个点跳到第一点)
      (setq jiaodian(inters pt1 pt2 pt3 pt4));判断线段相交
      (if jiaodian(command "CIRCLE" jiaodian rrno1));画圆
      (if jiaodian(setq nn(1+ nn)));计数
      (setq $j (1+ $j))
    )
    (setq $i (1+ $i))
    (setq $j (+ 2 $i))
  )
  (setvar "osmode" os)
  (princ "\n共找到") (princ nn)(princ "个自相交点。")
  (prin1)
  )
(prompt
  "\n******* zjhy[自交画圆]命令加载完成!*******------tryhi----2015-9-10"
)(prin1)
;;返回多段线顶点表         
  (defun Vertexs (s1 / lst);
    (setq  lst (entget s1)
      lst (vl-remove-if-not '(lambda (x) (= (car x) 10)) lst)
      lst (mapcar 'cdr lst)
    )
  )
;;                  实型数输入格式化                           
(defun ureal (bit kwd msg def / inp)
  (if def
    (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ") bit (* 2 (fix (/ bit 2))))
    (setq msg (strcat "\n" msg ": "))
  )
  (initget bit kwd)
  (setq inp (getreal msg))
  (if inp inp def)
)

网上找了一个但是不能用,,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2019-7-6 22:42:43 | 显示全部楼层
很好,很需要,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2019-7-6 22:53:04 | 显示全部楼层
很好,刚好需要,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2020-7-27 08:41:03 | 显示全部楼层
谢谢版主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
pxr201419 发表于 2019-6-12 11:55
你上面找的这个功能是:如果多线段或样条曲线自身有交点,在交点处画圆,和我的功能不一样。
这里把我的代 ...

大师,请问怎样才自身交点不包含在里面?麻烦了,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )  

GMT+8, 2020-11-26 09:27 , Processed in 0.319480 second(s), 85 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表