shakuhachi 发表于 2022-7-6 09:38:50

柱脚的最后一个角度

我在网上找到了这个代码,不知道出了什么问题。
我需要找到最后一个角度,这样我就可以在最后一个角度的方向上插入一个块到最后一个点。非常感谢您的帮助。
 
 
(DEFUN C:FPOLE(/ent sub1 ptlist pt1 pt2 ang)
 
(命令“pLINE”)
(while(=1(getvar“cmdactive”))
(命令暂停)
)
(SETQ ENT(CAR(ENTLAST)))
(SETQ SUB1(ENTNEXT ENT))
(SETQ PTLIST NIL)
(当SUB1
(IF(=(CDR(aSSOC 0(ENTGET SUB1)))“顶点”)
(SETQ PTLIST(追加PTLIST(列表
(CDR(aSSOC 10(ENTGET SUB1 kаааа)а)
)
(SETQ SUB1(ENTNEXT SUB1))
)
(SETQ PT1(CADR(反向PTLIST)))
(SETQ PT2(最后一个PTLIST))
(SETQ ANG1(角度PT1 PT2))
(SETQ ANG2(RTOS(*180.0(/ANG1 pi)))2 4)
 
(COMAND“INSERT”“FLAG”“1”“1”ANG2)
)

Lee Mac 发表于 2022-7-6 09:59:11

最后一个“command”函数只有一个“m”,Insert命令没有指定插入点。
 
然而,我倾向于在这项任务中使用曲线函数,因为代码将适用于圆弧、圆、直线、多段线、LW多段线、椭圆、样条曲线等。
 

(defun c:test ( / a e p ) (vl-load-com)
(if
   (and (setq e (car (entsel)))
   (not
       (vl-catch-all-error-p
         (setq p
         (vl-catch-all-apply 'vlax-curve-getEndParam (list e))
         )
       )
   )
   (setq a (* 180. (/ (angle '(0. 0. 0.) (vlax-curve-getFirstDeriv e p)) pi)))
   )
   (command "_.-insert" "flag" "_non" (trans (vlax-curve-getPointatParam e p) 0 1) "1" "1" a)
)
(princ)
)
 
注意,没有检查“flag”块的存在。

Lee Mac 发表于 2022-7-6 10:18:30

哦,顺便说一句,请阅读这篇关于邮寄代码的文章。

shakuhachi 发表于 2022-7-6 10:38:14

谢谢李!你是最好的。你总是激励我说,Lisp程序是多么简单,但在一个简单的头脑里却太复杂了。

Lee Mac 发表于 2022-7-6 10:47:39

谢谢Shakuhachi
 
我很高兴能为我的帖子提供一些灵感
页: [1]
查看完整版本: 柱脚的最后一个角度