Autocad lisp需要帮助!
我正忙于这个项目,所以我没有时间自己写这个lisp,因为我在这方面没有任何经验,所以如果有人能帮我的话,那就太好了。无论如何,我有很多在autocad中绘制的地块,我需要做的是修剪所有多段线端点和交点,并在中间在中间。我手动这样做:
-首先,我在多段线的端点和交点上画圆(半径必须为0.5)
-然后我修剪圆内的所有线
-然后在圆心插入一个点,最后删除圆。
底部还有一张图片,显示了过程的第一个和最后一个阶段。
如果有人知道Lisp程序可以做到这一点,或者有时间写一个,这将对我有很大帮助。 大家好,欢迎来到论坛!
我完全相信这里的Lisp程序大师,但直到他们醒来:
-break lisp-要用所有其他行打断所有行,请在此处找到它:http://www.theswamp.org/index.php?topic=10370.0(需要是会员才能使用链接)
-ptmanager-要在所有端点上插入一个圆和一个点,请在此处找到它:http://www.lee-mac.com/ptmanager.html
但我还没有想出如何修剪圆内的所有东西。。。 欢迎加入,
请上传带有“之前”和“之后”情况的样本图纸,
只有几个包裹 为什么不使用一个具有覆盖或实体图案填充的块,颜色为255255? 你面临什么样的最后期限? 假设它是多段线,下面将在每个顶点插入一个30边的多边形区域覆盖。然后在中心插入一个点。
例程通过调用作为Express工具一部分的tframes来关闭擦除帧。
ymg公司
;; Polygonal Wipeout-Lee Mac ;
;; Creates an n-sided Polygonal Wipeout with the given center (UCS) & radius;
;; ;
;; Modified by ymg ;
(defun pwipeout ( cen rad n / ang inc lst )
(setq inc (/ pi n 0.5)
ang (* (/ pi 2) -1)
)
(repeat n
(setq lst (cons (list 14 (* 0.5 (cos ang)) (* 0.5 (sin ang))) lst)
ang (+ ang inc)
)
)
(entmakex
(append
(list
(cons 0 "WIPEOUT")
(cons 100 "AcDbEntity")
(cons 100 "AcDbWipeout")
(cons 10 (trans (mapcar '- cen (list rad rad)) 1 0))
(cons 11 (trans (list (+ rad rad) 0.0) 1 0 t))
(cons 12 (trans (list 0.0 (+ rad rad)) 1 0 t))
(cons 280 1)
(cons 71 2)
(cons 91 (1+ (length lst)))
)
(cons (last lst) lst)
)
)
)
;;; listpol (gile) ;
;;; Returns the vertices list of any type of polyline (WCS coordinates) ;
;;; ;
;;; Argument ;
;;; pl : a polyline (ename or vla-object) ;
(defun listpol (pl / pa pt lst)
(vl-load-com)
(setq pa (if (vlax-curve-IsClosed pl)
(vlax-curve-getEndParam pl)
(1+ (vlax-curve-getEndParam pl))
)
)
(while (setq pt (vlax-curve-getPointAtParam pl (setq pa (1- pa))))
(setq lst (cons (trans pt 0 1 ) lst))
)
)
;; By Jason Piercey ;
;; Returns t if wipeouts frames are turned off ;
(defun frameOff? ()
(and
(setq Data (dictsearch (namedobjdict) "ACAD_WIPEOUT_VARS"))
(zerop (cdr (assoc 70 Data)))
)
)
(defun c:test ()
; Initializing wipeouts ;
(vl-cmdf "_WIPEOUT" '(0 0) '(5 5) '(8"")
(if (not (frameoff?)) (c:tframes))
(entdel (entlast))
(princ "\nSelect a Polyline: ")
(setq en (entsel))
(while(not (wcmatch (cdr (assoc 0 (entget (car en)))) "*POLYLINE"))
(princ "\nThe entity selected must be a POLYLINE ...")
(setq en (entsel))
)
(setq ent (car en)
pl (listpol ent)
)
(foreach p pl
(pwipeout p 0.5 30)
(vl-cmdf "_POINT" p)
)
)
页:
[1]