Fierce12 发表于 2022-7-6 06:35:22

将多段线偏移到新glo

我正在寻找一个LISP,它允许我将一个全局宽度(任何不同宽度)的层上的多段线偏移到另一个全局宽度为0的层(写入代码的特定层)。请帮忙

Tharwat 发表于 2022-7-6 06:47:28


 

(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)
)

alanjt 发表于 2022-7-6 06:52:51

下面是一个简单的示例,让您开始学习:
 
(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)
)

Fierce12 发表于 2022-7-6 07:02:28

谢谢alan!这非常有效!

alanjt 发表于 2022-7-6 07:15:35

 
这并不漂亮,但足以让你开始。快乐的编码。

Fierce12 发表于 2022-7-6 07:25:10

谢谢你!我觉得你们真的很亲近!除非我遗漏了什么,否则我无法改变全局宽度。感谢您的快速回复。

alanjt 发表于 2022-7-6 07:34:44

Tharwat,更改偏移命令设置时要小心。您不会将其更改回原始设置。

Tharwat 发表于 2022-7-6 07:40:30

完全正确,谢谢艾伦的宝贵评论。
页: [1]
查看完整版本: 将多段线偏移到新glo