使用Entmake创建块
你好我试图创建一个块,我不知道为什么它不起作用。
有人能帮我一下吗。
(defun CreationBois (Nom Dim1 Dim2)
(entmake (list '(0 . "BLOCK")
(cons 2 nom)
(cons 10 (list (/ Dim1 2) Dim2))
'(70 . 1)
)
)
(entmake
(list '(0 . "LINE")
'(8 . "-LU BOIS")
'(10 0 0)
(cons 11 (list Dim1 0))
)
)
(entmake (list '(0 . "LINE")
'(8 . "-LU BOIS")
(cons 10 (list Dim1 0))
(cons 11 (list Dim1 Dim2))
)
)
(entmake (list '(0 . "LINE")
'(8 . "-LU BOIS")
(cons 10 (list Dim1 Dim2))
(cons 11 (list 0 Dim2))
)
)
(entmake (list '(0 . "LINE")
'(8 . "-LU BOIS")
(cons 10 (list 0 Dim1))
'(11 0 0)
)
)
(entmake (list '(0 . "LINE")
'(8 . "-LU BOIS")
'(10 0 0)
(cons 11 (list Dim1 Dim2))
)
)
(entmake (list '(0 . "LINE")
'(8 . "-LU BOIS")
(cons 10 (list Dim1 0))
(cons 11 (list 0 Dim2))
)
)
(entmake (list '(0 . "ENDBLK")
'(8 . "_LU BOIS")
)
)
)
它曾经有用!但并不完全像这样。
我没有收到任何错误。
当做 你是不是特别想制造一个匿名区块?
如果是这样,您将向函数传递什么块名?
这对我有用:(CreationBois“*U1”8 9) 我试图传递4x4的块名。
这不是匿名的 好吧,我想出来了!!
不得不把
(70 . 1) to (70 . 2) 嗨,弗兰克,
试试这个最小化的代码
(defun CreationBois(nom Dim1 Dim2)
(if (tblsearch "BLOCK" nom)
(princ
(strcat "\nBlock name <" nom "> is already existed !"))
(progn
(entmake (list '(0 . "BLOCK")
(cons 2 nom)
(cons 10 (list (/ Dim1 2) Dim2))
'(70 . 0)
)
)
(mapcar '(lambda (x y)
(entmake
(list '(0 . "LINE")
'(8 . "-LU BOIS")
x
y
)
))
(list '(10 0 0)
(cons 10 (list Dim1 0))
(cons 10 (list Dim1 Dim2))
(cons 10 (list 0 Dim1))
'(10 0 0)
(cons 10 (list Dim1 0)))
(list (cons 11 (list Dim1 0))
(cons 11 (list Dim1 Dim2))
(cons 11 (list 0 Dim2))
'(11 0 0)
(cons 11 (list Dim1 Dim2))
(cons 11 (list 0 Dim2)))
)
(entmake (list '(0 . "ENDBLK")
'(8 . "-LU BOIS")
)
)
)
)
(princ)
) 我试图用foreach最小化代码
如果我做不到。我试试你的。
感谢
干杯和啤酒!
如果将位代码1传递给组70,则块名必须以开头
[*]因为这将是一个匿名块。
您应该将组70更改为0,而不是2,因为2表示您将向其附加属性。 好的,我已经走了这么远,我认为他们的一些东西,我没有得到与列表和引用。
(defun CreationBois (Nom Dim1 Dim2)
(entmake (list '(0 . "BLOCK")
'(100 . "AcDbEntity")
'(100 . "AcDbBlockBegin")
(cons 2 nom)
'(8 . "_LU BOIS")
(cons 10 (list (/ Dim1 2) Dim2))
'(70 . 0)
)
)
(setq points(list (list (list(0 0)) (list (Dim1 0)))
;;; '((list Dim1 0) (list Dim1 Dim2))
;;; '((list Dim1 Dim2) (list 0 Dim2))
;;; '((list 0 Dim1) (list 0 0))
;;; '((list Dim1 Dim2) (list 0 0))
;;; '((list Dim1 0) (list 0 Dim2))
)
)
(foreach point points
(entmake
(list '(0 . "LINE")
'(8 . "_LU BOIS")
(cons 10 (car points))
(cons 11 (cadr points))
)
)
)
(entmake (list '(0 . "ENDBLK")
'(100 . "AcDbBlockEnd")
'(100 . "AcDbBlockEnd")
'(8 . "_LU BOIS")
)
)
)
现在无论我做什么,它总是给我和错误。
有什么建议吗? 对于初学者:
将(车点)更改为(车点)等
据我所知,这100个小组没有真正的必要
“块”组10需要x、y和z值 提示:
(cons 1 (list 2 3 4)) == (1 2 3 4) == (list 1 2 3 4)
页:
[1]
2