知行ooo李肖坪 发表于 2015-12-20 05:47:02

求助:多段线拐点画圆lisp程序


多段线拐点绘制圆,删除圆内线段1.      找到选中的多段线拐点的点集(entsel选中,entget得到串行,坐标行表头为10得到多段线坐标); 2.      在每个顶点处利用CAD命令画圆(circle,圆半径为0.4米);·                               3.          删除圆内多段线;                               


http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 知行ooo李肖坪的微博

llsheng_73 发表于 2015-12-20 11:28:22

建议第三步不要对多段线进行修改(不管是修剪还是怎么样),用多段线模拟圆做个wipeout把圆内的多段线盖住

杜阳 发表于 2015-12-20 11:31:24

ZZXXQQ大师不是给你解决了吗???

杜阳 发表于 2015-12-20 11:32:23

http://bbs.mjtd.com/thread-169202-1-1.html

杜阳 发表于 2015-12-20 11:53:50

;批量画圆
(vl-load-com)
(defun vertexs (ename / plist pp n)
(setq obj (vlax-ename->vla-object ename))
(setq plist (vlax-safearray->list
(vlax-variant-value
(vla-get-coordinates obj))))
(setq n 0)
(repeat (/ (length plist) 2)
(setq pp (append pp (list (list (nth n plist)(nth (1+ n) plist)))))
(setq n (+ n 2))
)
pp
)
(defun c:tt()
(setvar "CMDECHO" 0)
    (setq r (getreal "\n半径:"))
(setq s1 (car (entsel "\n选择多段线: ")))
(setq ptn (vertexs s1))
(setq i 0)
(while (and (setq p0 (nth i ptn))
(setq pt p0) )   
(setq i (1+ i)
)
    (command "circle" pt r)
)
)

杜阳 发表于 2015-12-20 11:54:37

打断还没搞出来呵呵   先用着吧 光是多段线断点批量画圆实现了

香田里浪人 发表于 2015-12-20 12:48:07

(defun c:hydd ()
(setvar "CMDECHO" 0)
(setq r (getreal "\n半径:"))
(while (and (setq s1 (entsel "\n选择多段线: "))
             (setq ent (entget(car s1)))
             (= (cdr(assoc 0 ent)) "LWPOLYLINE"))
(setq ptlst (list))
(foreach x ent (if (= (car x) 10) (setq ptlst (cons (cdr x) ptlst))))
(foreach x ptlst
   (entmake (list '(0 . "CIRCLE") (cons 10 x) (cons 40 r)))
   (command "_.TRIM" "L" "" x "")
)
)
(setvar "CMDECHO" 1)
(princ)
)

xyp1964 发表于 2015-12-20 13:13:13



知行ooo李肖坪 发表于 2015-12-20 18:44:40

非常感谢………………

知行ooo李肖坪 发表于 2015-12-20 18:48:01

llsheng_73 发表于 2015-12-20 11:28 static/image/common/back.gif
建议第三步不要对多段线进行修改(不管是修剪还是怎么样),用多段线模拟圆做个wipeout把圆内的多段线盖住

谢谢……这个建议是可行的
页: [1] 2
查看完整版本: 求助:多段线拐点画圆lisp程序