(求助)各位大神,看能不能帮小弟解决一下,双边偏移的问题
各位大神,小弟在此打扰大家了,如果有知道怎么解决的大神,抽空帮小弟解决一下,谢谢啦
代码附件已经发了
目前的情况就是:第一次输入命令时——输入间距为20——批量或只选一根线——结果往两边偏移的总间距是20(意思是左右两边一边偏移了10)(第一次输入命令是没有问题的)
第二次输入命令时(因为这个是带记忆功能的)——间距却变成了10(我想让这个间距还是20)——结果变成了两边偏移的总间距是10(意思是左右两边一边偏移了5)
第三次输入命令时(因为这个是带记忆功能的)——间距却变成了5(我想让这个间距还是20)——结果变成了两边偏移的总间距是5(意思是左右两边一边偏移了2.5)
求求大神,看能不能帮小弟解决这个问题,就是第一次输入的值是20,左右之间的间距是20,后面的不输入值,
默认的还是第一次输入的20,而不是越变越小的值
,感谢大神位的耐心停留
以下是代码
[*];双偏去中线
[*](defun c:EE( / en m n pon ename et ppp ouse )
[*](setvar "cmdecho" 1)
[*](COMMAND "OFFSET" PAUSE "")
[*];(prompt "\n Select Objects to Offset: ")
[*](setq en (ssget))
[*](setq m (sslength en ))
[*](setq n 0)
[*](setvar "cmdecho" 0)
[*](setq x (*(getvar "offsetdist")0.5))
[*](repeat m
[*] (setq ename (ssname en n))
[*] (setq et(entget ename))
[*] (setq ppp (trans (cdr (assoc 10 et)) 0 1))
[*] (setq ouse (list ename ppp))
[*] (setq pon(trans (list (+ (car ppp) 1001) (- (cadr ppp) 1000) ) 0 1 ))
[*]; (command "offset" "" ouse pon "")
[*](command "offset" x ouse pon "")
[*] (setq ouse (list (entlast) (trans (cdr (assoc 10 (entget (entlast)))) 0 1)))
[*] (command "offset" (* (getvar "offsetdist") 2 )ouse ppp "")
[*] (command "offset" (/ (getvar "offsetdist") 2 ) "")
[*] (setq n (+ n 1))
[*] (if (entget ename) (entdel ename))
[*])
[*])
(defun c:tt ()
"双偏去中线"
(defun udist (bit kwd msg def bpt / inp)
(if def
(setq msg (strcat "\n" msg "<" (rtos def) ">: ")
bit (* 2 (fix (/ bit 2)))
)
(setq msg (strcat "\n" msg ": "))
)
(initget bit kwd)
(setq inp(if bpt(getdist msg bpt)(getdist msg)))
(if inp inp def)
)
(or dd (setq dd 20.))
(setq dd (Udist 7 "" "距离<输入或鼠标直接量取>" dd nil)
d1 (* dd 0.5)
)
(setq i -1)
(if (setq ss (ssget))
(while (setq s1 (ssname ss (setq i (1+ i))))
(setq ob (vlax-ename->vla-object s1))
(vla-offset ob d1)
(vla-offset ob (- d1))
(entdel s1)
)
)
(princ)
) 随便搞搞不就行了
;双偏去中线
(defun c:EE( / en m n pon ename et ppp ouse )
(setvar "cmdecho" 1)
(COMMAND "OFFSET" PAUSE "")
;(prompt "\n Select Objects to Offset: ")
(IF (AND
(setq en (ssget))
(setq m (sslength en ))
(setq n 0)
)
(PROGN
(setvar "cmdecho" 0)
(setq x (*(getvar "offsetdist")0.5))
(repeat m
(setq ename (ssname en n))
(setq et(entget ename))
(setq ppp (trans (cdr (assoc 10 et)) 0 1))
(setq ouse (list ename ppp))
(setq pon(trans (list (+ (car ppp) 1001) (- (cadr ppp) 1000) ) 0 1 ))
; (command "offset" "" ouse pon "")
(command "offset" x ouse pon "")
(setq ouse (list (entlast) (trans (cdr (assoc 10 (entget (entlast)))) 0 1)))
(command "offset" (* (getvar "offsetdist") 2 )ouse ppp "")
(command "offset" (/ (getvar "offsetdist") 2 ) "")
(setq n (+ n 1))
(if (entget ename) (entdel ename))
)
(setvar "offsetdist" (*(getvar "offsetdist")2))
)
)
(princ)
)
xyp1964 发表于 2024-1-13 17:16
谢谢院长大人,这个插件非常的好用,感谢感谢 xj6019 发表于 2024-1-13 16:45
随便搞搞不就行了
大神改的正是我想要的,谢谢大神出手 非常不错, 收下备用
页:
[1]