这个scr包含以下代码:
(命令“_text”“10001000,0”“40”“0”“TEXTLINE”)
适用于Autocad 2008。
谢谢,祝你好运! 这会给你在绘图中使用不同的文本样式带来问题——我倾向于使用entmake。 根据我的建议,我已经开始了理解entmake的旅程,并将努力摆脱使用(命令…)的旧习惯总是
李,我有你指示我去的entmakex实体的列表,谢谢。我决定采用每个实体类型,并尝试通过将正确的参数传递给entmake引擎来调用它们。简单的实体(线、圆、文本等)是我可以实现的。然而,区块仍然是一个谜。我查看了一些不同的代码,认为如果先定义块,然后定义子实体,然后关闭(结束)块定义,我应该会看到块出现在屏幕上。
该代码在图形数据库中创建块图元的实例,但不会显示在屏幕上。
(defun c:LOLLIPOP ()
(entmake '((0 . "BLOCK")
(100 . "AcDbEntity")
(67 . 0)
(8 . "0")
(100 . "AcDbBlockReference")
(66 . 1)
(2 . "LOLLIPOP")
(10 0.0 0.0 0.0)
(70 . 2)
)
)
(entmake '((0 . "CIRCLE")
(100 . "AcDbEntity")
(67 . 0)
(8 . "NewLayer1")
(100 . "AcDbCircle")
(10 0.0 3.0 0.0)
(40 . 1.0)
)
)
(entmake '((0 . "LINE")
(100 . "AcDbEntity")
(67 . 0)
(8 . "NewLayer2")
(100 . "AcDbLine")
(10 0.0 0.0 0.0)
(11 0.0 2.0 0.0)
)
)
(entmake '((0 . "ATTDEF")
(100 . "AcDbEntity")
(67 . 0)
(8 . "NewLayer3")
(100 . "AcDbText")
(10 -0.375 2.4375 0.0)
(40 . 1.125)
(1 . "X")
(50 . 0.0)
(41 . 1.0)
(51 . 0.0)
(7 . "MONOSIFR")
(71 . 0)
(72 . 4)
(11 0.0 3.0 0.0)
(100 . "AcDbAttributeDefinition")
(3 . "PROMPT X:")
(2 . "TAGX")
(70 . 0)
(73 . 0)
(74 . 0)
)
)
(entmake '((0 . "ENDBLK") (100 . "AcDbBlockEnd") (8 . "0")))
(command "_.Layer" "c" "1" "NewLayer1" "c" "2" "NewLayer2" "c" "3" "NewLayer3" "")
(princ)
)
为什么不显示?此外,我使用命令更改图层颜色。我研究了entmod,但它并没有解释修改层属性。有没有更合适的方法可以在不使用命令调用的情况下修改图层特性?
只是一个快速而肮脏的版本
(更改代码中的textstyle名称)
(defun emake_lollipop (p)
(entmake (list (cons 0 "INSERT")
(cons 2 "LOLLIPOP")
(cons 10 p)
(cons 66 1)
(cons 62 256)
(cons 39 0)
(cons 6 "BYLAYER"))
)
(entmake (list (cons 0 "ATTRIB")
(cons 8"NewLayer3")
(cons 10 (mapcar '+ p '(-0.375 2.4375 0.0)))
(cons 11 (mapcar '+ p '(0.0 3.0 0.0)))
(cons 40 1)
(cons 1 "Blablabla")
(cons 2 "TAGX")
(cons 70 0)
(cons 73 0)
(cons 50 0)
(cons 41 1)
(cons 51 0)
(cons 7 "STANDARD")
(cons 71 0)
(cons 72 0)
(cons 210 (list 0 0 1))
(cons 73 0)
(cons 62 256)
(cons 39 0)
(cons 6 "BYLAYER"))
)
(entmake (list
(cons 0 "SEQEND")
(cons 8 "0"))
)
)
(defun c:LOLLIPOP ()
(command "_.Layer" "m" "NewLayer1" "c" "1" "NewLayer1"
"m" "NewLayer2" "c" "2" "NewLayer2"
"m" "NewLayer3" "c" "3" "NewLayer3" "")
(if (not (tblsearch "block" "lollipop"))
(progn
(entmake '((0 . "BLOCK")
(100 . "AcDbEntity")
(67 . 0)
(8 . "0")
(100 . "AcDbBlockReference")
(66 . 1)
(2 . "LOLLIPOP")
(10 0.0 0.0 0.0)
(70 . 2)
)
)
(entmake '((0 . "CIRCLE")
(100 . "AcDbEntity")
(67 . 0)
(8 . "NewLayer1")
(100 . "AcDbCircle")
(10 0.0 3.0 0.0)
(40 . 1.0)
)
)
(entmake '((0 . "LINE")
(100 . "AcDbEntity")
(67 . 0)
(8 . "NewLayer2")
(100 . "AcDbLine")
(10 0.0 0.0 0.0)
(11 0.0 2.0 0.0)
)
)
(entmake '((0 . "ATTDEF")
(100 . "AcDbEntity")
(67 . 0)
(8 . "NewLayer3")
(100 . "AcDbText")
(10 -0.375 2.4375 0.0)
(40 . 1.125)
(1 . "X")
(50 . 0.0)
(41 . 1.0)
(51 . 0.0)
(7 . "STANDARD")
(71 . 0)
(72 . 4)
(11 0.0 3.0 0.0)
(100 . "AcDbAttributeDefinition")
(3 . "PROMPT X:")
(2 . "TAGX")
(70 . 0)
(73 . 0)
(74 . 0)
)
)
(entmake '((0 . "ENDBLK")(8 . "0"))
)
)
)
(while
(setq p (getpoint "\nPick insertion point >> "))
(emake_lollipop p)
)
(princ)
)
在输入块定义后,您需要
创建块实例和属性引用的步骤
同样的方法
~'J'~ 谢谢菲索。这是我误解的部分。
扔出 所有这些使用entmake和您使用命令来创建层。感觉就像是买了一辆捷豹,但为了节省100美元,在真皮座椅上省钱。
别介意,我只是随便挑。 实际上,在我的代码中,我省略了层的创建,因为当输入块实体时,层是自动创建的。我在什么地方读过这篇文章,但忘了在哪里。这是真的吗?
我这样做的原因是因为我试图先entmake层,在生成错误的同时,发现我不必在块中,但任何关于正确entmake层过程的额外教程都将不胜感激。
扔出 下面是几个创建层的示例。Vovka在entmake上做得很好。
http://www.theswamp.org/index.php?topic=33041.0
另外,要知道,在使用entmake时,如果指定了一个层(cons 8“LayerName”),如果该层不存在,则会创建该层。 哇,四个版本可供学习!
非常好的链接,谢谢。 大多数示例(我的和罗恩的)都在VLA中,但沃夫卡的是一个很好的entmake示例。
页:
1
[2]