将多段线偏移到新glo
我正在寻找一个LISP,它允许我将一个全局宽度(任何不同宽度)的层上的多段线偏移到另一个全局宽度为0的层(写入代码的特定层)。请帮忙 这(defun c:Test (/ *error* w l cl)
;;--- Tharwat 14. May. 2013 ---;;
(defun *error* (x)
(if cl (setvar 'clayer cl))
(princ "\n*Cancel*")
)
(setq w 1.0 ; Width Value
l "0" ; Layer Name
)
(if
(and (if (or (eq (type w) 'INT)
(eq (type w) 'REAL)
)
t
(progn
(alert "Width Value must be either INTER , REAL Number <!>")
nil
)
)
(if (tblsearch "LAYER" l)
t
(progn
(alert "Layer name is not found in drawing <!>")
nil
)
)
)
(progn
(setq cl (getvar 'clayer))
(setvar 'clayer l)
(command "_.offset" "_Layer" "_Current" w "\\" "\\" "")
(setvar 'clayer cl)
)
)
(princ)
)
下面是一个简单的示例,让您开始学习:
(defun c:test (/ layer width entl dist ent pnt data)
(setq layer "LAYER"
width 2.
entl(entlast)
)
(initget 6)
(if (and (setq dist (getdist "\nSpecify offset distance: "))
(setq ent (entsel "\nSelect LWPolyline to offset: "))
(or (eq (cdr (assoc 0 (entget (car ent)))) "LWPOLYLINE")
(progn (princ "\nInvalid object!") nil)
)
(setq pnt (getpoint "\nSpecify point on side to offset: "))
)
(progn
(command "_.offset" dist ent "_non" pnt "_EXIT")
(if (not (equal entl (setq entl (entlast))))
(entmod (subst (cons 8 layer)
(assoc 8 (setq data (entget entl)))
(subst (cons 43 width) (assoc 43 data) data)
)
)
)
)
)
(princ)
) 谢谢alan!这非常有效!
这并不漂亮,但足以让你开始。快乐的编码。 谢谢你!我觉得你们真的很亲近!除非我遗漏了什么,否则我无法改变全局宽度。感谢您的快速回复。 Tharwat,更改偏移命令设置时要小心。您不会将其更改回原始设置。 完全正确,谢谢艾伦的宝贵评论。
页:
[1]