这个口齿不清有什么帮助吗?
该代码替换块仅对角度插入操作正常不正确且有问题,这意味着不遵循原点块的角度插入:o(PROMPT "\n*REPLACE BLOCK* ")
(SETQ BN (GETSTRING "\nEnter block name to replace: "))
(SETQ NBFN (GETSTRING "\nEnter block name to replace with: "))
(SETQ FLT (CONS 2 BN))
(SETQ BSS (SSGET "x" (LIST FLT)))
(SETQ BSSL (SSLENGTH BSS))
(SETQ CT (- BSSL 1))
(SETQ LP 1)
(WHILE LP
(SETQ BEN (SSNAME BSS CT))
(SETQ BENL (ENTGET BEN))
(SETQ CT (- CT 1))
(SETQ BENIP (CDR (ASSOC 10 BENL)))
(ENTDEL BEN)
(COMMAND "INSERT" NBFN BENIP "" "" "")
(IF (< CT 0) (SETQ LP NIL))
);END LP
(PRINC)
谢谢你的帮助 尝试
(SETQ BENIP (CDR (ASSOC 10 BENL)))
(setq rad (cdr (assoc 50 benl)));; angle in radians
(setq deg (* 180.0 (/ rad pi)));; angle in degrees
(ENTDEL BEN)
(COMMAND "INSERT" NBFN BENIP "" "" deg)
HTH公司
亨里克 所以超过XXXXXXXXXXXXXXXXXXXXXX很多,嗯,席尔瓦
不客气,霍辛!
作为演示,我的建议是在运行代码之前测试有效的选择集和有效的块名。。。
(defun c:demo (/ BEN BENIP BENL BN BSS DEG I NBFN XSC YSC)
(prompt "\n*REPLACE BLOCK* ")
(if (and (setq BN (getstring "\nEnter block name to replace: "))
(setq NBFN (getstring "\nEnter block name to replace with: "))
(setq BSS (ssget "x" (list (cons 2 BN))))
(or (tblsearch "BLOCK" NBFN)
(findfile NBFN)
);; or
);; and
(repeat (setq I (sslength BSS))
(setq BEN (ssname BSS (setq I (1- I)))
BENL(entget BEN)
BENIP (cdr (assoc 10 BENL))
DEG (* 180.0 (/ (cdr (assoc 50 BENL)) pi));; rotation
XSC (cdr (assoc 41 BENL));; x scale
YSC (cdr (assoc 42 BENL));; y scale
)
(entdel BEN)
(command "_.insert" NBFN BENIP XSC YSC DEG)
);; repeat
);; if
(princ)
);; demo
HTH公司
亨里克
页:
[1]