CadFrank 发表于 2022-7-6 09:38:35


 
这是维度块

paulmcz 发表于 2022-7-6 09:44:20

由于没有人知道块的尺寸,下面的代码适合插入第一个块。对于第二个,需要计算第二个插入点的位置。
 
(command "_.insert" "path or block's name" point2 "x-scale" "y-scale" "rotation")
 
如果块已在图形中,请跳过路径

paulmcz 发表于 2022-7-6 09:46:32

好的,第二个块必须具有插入点=p3=>
(setq p3 (polar point2 (* pi 1.5) 38.0))

CadFrank 发表于 2022-7-6 09:50:32

假设这是我开始的代码
 

(defun c:BOX ( / pt1 pt2 pt3 pt4 )(setq pt1 (getpoint "Pick first corner: "))(setq pt3 (getcorner pt1 "Pick opposite corner: "))(setq pt2 (list (car pt3) (cadr pt1)))(setq pt4 (list (car pt1) (cadr pt3)))(command "line" pt1 pt2 pt3 pt4 "c" )(command "_.insert" "path or block's name" point2 "x-scale" "y-scale" "rotation")(setq p3 (polar point2 (* pi 1.5) 38.0))))
 
这样可以吗!

paulmcz 发表于 2022-7-6 09:51:47

如果块的名称为“123”,则它位于图形中,并且您希望接受x比例为1.0、y比例为1.0和旋转为0.0。
 
(defun c:BOXX (/ osn pt1 pt2 p3)
(setq osn (getvar "osmode"))
(setvar "osmode" 0)
(setq pt1 (getpoint "Pick first corner: "))
(setq pt2 (getcorner pt1 "Pick opposite corner: "))
(command "rectang" pt1 pt2)
(command "_.insert" "123" pt2 "" "" "" )
(setq p3 (polar pt2 (* pi 1.5) 38.0))
(command "_.insert" "123" p3 "" "" "")
(setvar "osmode" osn)
(princ)
)

paulmcz 发表于 2022-7-6 09:56:44

“BOX”是autocad的命令,因此不能将其用作defun的调用代码!

irneb 发表于 2022-7-6 09:57:37

你能不能制作一张样品图并附在这里,让我们看看它需要什么?

Tharwat 发表于 2022-7-6 10:01:47

 
他们在两个不同的线程中重复了相同的请求,请查看。
 
http://www.cadtutor.net/forum/showthread.php?61231-Creating-a-lisp-help-needed&p=415942&viewfull=1#post415942

CadFrank 发表于 2022-7-6 10:06:36

好的,谢谢你,它起作用了。!

SLW210 发表于 2022-7-6 10:07:49

我已经合并了你的线程。请你每个问题只需要一个线程。创建多个线程只会让人困惑。
页: 1 [2]
查看完整版本: 将lisp变大以获得矩形