Dan Kitchens 发表于 2022-7-6 08:36:10

LISP以圆角所有边o

有人知道lisp可以对选定层上所有三维实体的所有边进行圆角,或者类似的操作吗?
 
实体均为矩形拉伸,所有边和实体的圆角大小相同。
 
我看了整个网络,但似乎没有太多关于这一点,只有很多关于折线和直线,我不追求。
 
我想这对AutoCAD来说不是一件容易的事情!
 

GP_ 发表于 2022-7-6 08:40:51

试着祈祷
 
 

(defun C:Test (/ SOLID EL vte os RAD n List_p s1 edge p1 p2 pm)
   ;*** GP_06 dec. 2011 ***

   (if (not (member "geomcal.arx" (arx))) (arxload "geomcal"))
   (setq EL (entlast))
   (setq vte (getvar "vtenable"))
   (setq os (getvar "osmode"))
   (setq cmd (getvar "cmdecho"))
   (setvar "vtenable" 0)
   (setvar "cmdecho" 0)
   (prompt "\nSelect 3DSOLID ")
   (if (and
         (setq SOLID(ssget '((0 . "3DSOLID"))))
         (setq RAD (getreal "\nFillet radius "))
       )
       (progn
         (if (tblsearch "VIEW" "#") (command "_-VIEW" "_D" "#"))
         (command "_-VIEW" "_S" "#" )
         (command "_VPOINT" "1,-1.3,1")
         (setvar "osmode" 0)
         (repeat (setq n (sslength SOLID))
               (setq List_p nil)
               (setq s1 (ssname SOLID (setq n (1- n))))
               (if (> (distof (substr (getvar "acadver") 1 4)) 18.1)
                   (command "isolateobjects" s1 "")
               )
               (command "_ZOOM" "_OBJ" s1 "")
               (command "_XEDGES" s1 "")
               (while (setq edge (entnext EL))
                   (setq p1 (cdr (assoc 10 (entget edge))))
                   (setq p2 (cdr (assoc 11 (entget edge))))
                   (entdel edge)
                   (setq List_p (cons (cal "pm=plt(p1,p2,0.5)") List_p))
               )
               (repeat (setq i (length List_p))
                   (command "_FILLET" (nth (setq i (1- i)) List_p) RAD "")
               )
               (if (> (distof (substr (getvar "acadver") 1 4)) 18.1)
                   (command "unisolateobjects" "")
               )
         )
         (command "_-VIEW" "_R" "#")
         (command "_-VIEW" "_D" "#")
         (setvar "vtenable" vte)
         (setvar "cmdecho" cmd)
         (setvar "osmode" os)
       )
   )
   (princ)
)

Dan Kitchens 发表于 2022-7-6 08:47:05

 
 
我想我会祈祷,然后尝试。让你知道进展如何。感谢您的帮助。

Dan Kitchens 发表于 2022-7-6 08:52:15

高总成_
 
我在立方体(3d实体)上运行了代码,得到了以下命令行响应:-
 
命令:测试
选择3DSOLID
选择对象:找到1个
选择对象:
圆角半径1***I输入1***
未找到匹配的视图名称。未知命令“FILLET”。按F1键获取帮助。
1
 
不幸的是,我对LISP写作一无所知,所以我无法修改以更正它。如果你愿意改正,我会非常高兴,如果没有,我感谢你的努力!

GP_ 发表于 2022-7-6 08:55:49

我稍微修改了代码。
 
输入适当的半径。

Dan Kitchens 发表于 2022-7-6 09:00:11

我找不到修改过的代码。你上传了吗?

GP_ 发表于 2022-7-6 09:07:11

我编辑了我的第一篇文章。
试试1x1x1的立方体,半径为0.2
 
不幸的是,这并不总是可行的

Dan Kitchens 发表于 2022-7-6 09:09:32

还是有同样的错误

GP_ 发表于 2022-7-6 09:13:33

放大立方体,有圆角吗?

Dan Kitchens 发表于 2022-7-6 09:20:21

立方体上没有圆角。和以前一样的错误。我想就这样吧。无论如何谢谢你的帮助。。。
 
页: [1] 2
查看完整版本: LISP以圆角所有边o