hosyn 发表于 2022-7-5 22:36:58

这个口齿不清有什么帮助吗?

该代码替换块仅对角度插入操作正常不正确且有问题,这意味着不遵循原点块的角度插入: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)

谢谢你的帮助

hmsilva 发表于 2022-7-5 22:57:26

尝试
 

(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公司
亨里克

hosyn 发表于 2022-7-5 23:18:08

所以超过XXXXXXXXXXXXXXXXXXXXXX很多,嗯,席尔瓦

hmsilva 发表于 2022-7-5 23:44:01

 
不客气,霍辛!
 
 
作为演示,我的建议是在运行代码之前测试有效的选择集和有效的块名。。。
 

(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]
查看完整版本: 这个Lisp程序有什么帮助吗?