一次偏移多条线的代码可以简化吗 最好能列表输入数值
本帖最后由 xmq1103 于 2020-9-2 15:14 编辑(defun c:TT()
(setq l(entsel"请选择偏移的基线:"))
(setq p (getpoint "点取偏移方向:"))
(setq a 2)
(command "offset" a l p "")
(setq b(+ a 16))
(command "offset"b l p "")
(setq c(+ b 2))
(command "offset"c l p "")
(setq d(+ c 12))
(command "offset"d l p "")
)
自己写的上面的代码,如果好几条线,这样输感觉定量有点乱,能不能直接把一个数字集一起偏移呀,类似于下面的方式:
(defun c:TT()
(setq l(entsel"请选择偏移的基线:"))
(setq p (getpoint "点取偏移方向:"))
(setq aa(2 16 2 12 )) :这样直接输入一排数
(command "offset"aalp "") )
这个代码是不对的哦,就想找一种可以实现的编码方式,求大神不吝赐教,谢过了!!
最完美的函数在16楼!!!!!!!!
了解下子函数应用,写码会省事很多
(defun c:tt5(/ l lst p)
(setq l(entsel"请选择偏移的基线:"))
(setq p (getpoint "点取偏移方向:"))
(setq lst '(2 16 2 12))
(pianyi l p lst)
(princ)
)
(defun pianyi (ent pt lst / d);间隔数值列表偏移子函数
(setq d 0)
(foreach x lst
(setq d (+ d x))
(command "offset" d ent pt "")
)
) 代码特定情况特定数值的时候使用,一组数值在代码里面改就可以的 start4444 发表于 2020-8-28 14:59
了解下子函数应用,写码会省事很多
(defun c:tt5(/ l lst p)
谢谢,谢谢,就是这个意思,学习啦。 谢谢大神们的教导:lol 学习了 start4444 发表于 2020-8-28 13:59
了解下子函数应用,写码会省事很多
(defun c:tt5(/ l lst p)
您好,请问能实现往两个方向偏移吗,正向用正数,反向用负数
例如:
(defun c:tt5(/ l lst p)
(setq l(entsel"请选择偏移的基线:"))
(setq p (getpoint "点取偏移方向:"))
(setq lst '(5 10 15 -5 -10 -15)) ;我尝试这样输,程序不能执行呢,麻烦您给想个法吧,谢谢了!
(pianyi l p lst)
(princ)
)
(defun pianyi (ent pt lst / d);间隔数值列表偏移子函数
(setq d 0)
(foreach x lst
(setq d (+ d x))
(command "offset" d ent pt "")
)
)
能不能做成函数? xmq1103 发表于 2020-9-1 18:11
您好,请问能实现往两个方向偏移吗,正向用正数,反向用负数
例如:
给你个双向自定义函数,列表不用写负数,还是原来的就行
(defun pianyi-2 (ent pt lst / d);间隔数值列表双向偏移子函数
(vl-load-com)
(setq d 0)
(setq obj (vlax-ename->vla-object (car ent)))
(foreach x lst
(setq d (+ d x))
(vla-Offset obj d)
(vla-Offset obj (* -1 d))
)
) 本帖最后由 xmq1103 于 2020-9-2 10:19 编辑
start4444 发表于 2020-9-2 10:06
给你个双向自定义函数,列表不用写负数,还是原来的就行
(defun pianyi-2 (ent pt lst / d);间隔数值 ...
不好意思,抱歉抱歉,表达的不够全面,写的那个例子太特殊了,正好对称,如果是处理不对称的情况呢。
例如:
(setq lst '(5 10 15 -2 -7 -20))
xmq1103 发表于 2020-9-2 10:18
不好意思,抱歉抱歉,表达的不够全面,写的那个例子太特殊了,正好对称,如果是处理不对称的情况呢。
例 ...
不对称的双向偏移是比较麻烦的事情,建议你选取两点重复两次单向偏移,这样代码就简单很多了