Tetsuo 发表于 2022-7-6 09:15:08

偏移到不同距离

大家好,
 
我正在寻找多偏移的自动化。
我有一条多段线,我必须将这条多段线偏移到多个距离。。。
例如:偏移到20比偏移到35和偏移到56(震源线的所有方向偏移)
 
可以创建lisp或类似(宏,…)的东西吗在中,我可以输入不同的值,然后当我单击线条和方向时,脚本将线条偏移到所有值。。。
 
Thx(很抱歉我的英语不好:-)

ketxu 发表于 2022-7-6 09:25:15

你提到普林还是莱恩???

dbroada 发表于 2022-7-6 09:29:51

过去有一个设置,允许您在同一个命令中停留任意长的时间,这可能会满足您的需要。然而,我认为该命令是重复的,已经停止。由于您使用的是旧版本,您可以尝试一下,它可能仍然对您可用。

Tetsuo 发表于 2022-7-6 09:33:11

我说的是折线对不起。
这是一个运行良好的代码。。。
但是现在我想把一个负值。。。
例如,将ed var从15更改为-15。。。使线偏移另一边。。。
 
(defun C:dof()
(setq ad 9)
(setq zd 10)
(setq ed 15)
(while (setq obj (car (entsel "\nSelect object:")))
(setq ps (getpoint "\nSide to offset:"))
(if ps
(progn
(command "_offset" ad obj ps "")
(command "_offset" zd obj ps "")
(command "_offset" ed obj ps "")
)
)
)
(princ)
)
 
不知道是否可能

Frank Hull 发表于 2022-7-6 09:41:45

您可以考虑使用MLine。使用预设的偏移值创建多线样式。多线将分解为一组标准线。

Tetsuo 发表于 2022-7-6 09:50:56

是的,但我必须从多段线开始。。。
是否可以将多段线转换为多线,然后将多线转换为多段线。。。
该操纵器的目的是将现有绘图转换为cnc刀具的多路径。
 
正如我之前所说的,有负值偏移的解决方案吗

Tetsuo 发表于 2022-7-6 09:55:43

好吧
 
这就是我要做的
(defun C:dof()
(setq ad 9)
(setq zd 10)
(setq ed 15)
(while (setq obj (car (entsel "\nSelect object:")))
(setq psp (getpoint "\nSide to offset positif:"))
(setq psn (getpoint "\nSide to offset negatif:"))
(if psp
(progn
(command "_offset" ad obj psp "")
(command "_offset" zd obj psp "")
(command "_offset" ed obj psn "")
)
)
)
(princ)
)
 
我为偏移量定义了2点。。。一个正信号(psp)和一个负信号(psn)。点击更多,但效果很好。。。
 
我的最后一个问题:任何人都可以告诉我,我如何把我的每一个偏移线在一个特定的层。。。?

Tharwat 发表于 2022-7-6 09:58:36

可能
 

(defun c:test (/ ss e p d)
(if (and (setq ss
               (car (entsel "\n Select on entity :")
               )
          )
          (member (cdr (assoc 0 (setq e (entget ss))))
                  '("LINE" "SPLINE" "LWPOLYLINE")
          )
          (setq p (getpoint "\n Specify side offset :"))
   )
   (while
   (setq d (getdist "\n Specify offset distance :"))
      (command "_.offset" d ss p "")
   )
   (princ)
)
(princ)
)
 
塔瓦特

ketxu 发表于 2022-7-6 10:04:34

-哦,现在我明白你的意思了^^你可以用vla偏移来抵消负距离(但有时它不喜欢你想做的^^)。
语法:vla offset vlaLine distance
所以你可以试试这样的东西(只是为了表演^^):
 
(defun C:dof(/ lstDis obj)
(setq lstDIS '(9 10 -15))
(while (setq obj (car (entsel "\nSelect object:")))
(foreach dis lstDIS
(vla-offset (vlax-ename->vla-object obj) dis)
)
)
(princ)
)
 
-下一步:在代码中,您可以在一个命令之前使用(setvar“clayer”“此处为您的层”)将每一行*放在一个特定的层中

alanjt 发表于 2022-7-6 10:10:36

你可以做一个小的子程序并从中构建。。。
 
(defun _offsetLots (entity point offsetlist)
(foreach offset offsetlist (command "_.offset" offset entity "_non" point ""))
)
 
致电:
(_offsetLots (entsel) (getpoint) '(1. 2. 3. 4. 5.))
页: [1] 2
查看完整版本: 偏移到不同距离