偏移命令w需要Lisp
有人能帮我吗?我需要lisp的两层变化与使用偏移命令。请看我下面的草图。。。这里有两层,即混凝土层和保护层。现在,当前层是混凝土层,我需要将50mm偏移到带有覆盖层的内部矩形(不需要手动更改层属性),但在完成偏移命令后,当前层应更改为旧层,即混凝土层。请帮帮我。。30228 这
(defun c:test (/ n ss p e)
;; Tharwat 27. Sep. 2011 ;;
(if
(and (setq n (getdist "\n Specify the Offset Distance :"))
(setq
ss (ssget "_+.:S:L" '((0 . "*POLYLINE,*LINE,CIRCLE,ELLIPSE")))
)
(setq p (getpoint "\n Specify point :"))
)
(progn
(command "_.offset" n ss "_non" p "")
(setq e (entlast))
(if (tblsearch "LAYER" "cover")
(command "_.chprop" e "" "_layer" "cover" "")
)
)
(princ)
)
(princ)
)
塔瓦特
(defun c:test ( / ss->lst pairpts revpl coverlayer concretelayer dist ss )
(vl-load-com)
(setq coverlayer "defpoints")
(setq concretelayer "0")
(defun ss->lst ( ss flag / id lst )
(if (eq 'PICKSET (type ss))
(repeat (setq id (sslength ss))
(
(lambda ( name )
(setq lst
(cons
(if flag (vlax-ename->vla-object name)
name
)lst
)
)
)(ssname ss (setq id (1- id)))
)
)
)
)
(defun pairpts ( _list / l pt )
(foreach x (reverse _list)
(if pt
(setq l (cons (cons x pt) l) pt nil)
(setq pt (cons x pt))
)
) l
)
(defun revpl ( vla-obj / catch openpl )
(and (eq :vlax-false (setq openpl (vla-get-closed vla-obj)))
(vla-put-closed vla-obj :vlax-true)
)
(setq catch
(vl-catch-all-apply (function vlax-invoke)
(list vla-obj
'offset (vla-get-length vla-obj)
)
)
)
(and (eq :vlax-false openpl)
(vla-put-closed vla-obj :vlax-false)
)
(if (vl-catch-all-error-p catch)
(vlax-put vla-obj 'coordinates
(apply (function append)
(reverse
(pairpts (vlax-get vla-obj 'coordinates))
)
)
) (and catch (vla-delete (car catch)))
)
vla-obj
)
(if (and (setq dist (getdist "\nSpecify distance to offset: "))
(setq ss (ss->lst (ssget '((0 . "lwpolyline"))) t)))
(foreach x ss
(vla-put-layer x coverlayer)
(vla-put-layer
(car
(vlax-invoke (revpl x)
'offset dist
)
) concretelayer
)
)
) (princ)
)
谢谢你的朋友。。。 谢谢朋友 这很好:拇指支撑: 我想知道那个朋友是谁!! 这可能有助于添加到Tharwats代码中
http://www.cadtutor.net/forum/showthread.php?62893-LISP-for-a-rectangle-inside-a-rectangle
两者的结合? 对于需要偏移的选定对象集,如何将偏移量预设为3’-0”,并将线型更改为DASHDOT,而不是更改新偏移线的图层? K Baden从上面看一下这些代码,它有你想要的所有答案,是时候试试你的lisp技能了。
(setq dist
(vla-put-layer look at 2nd one
页:
[1]
2