真 的!!!现在这是正确的方法!!!
另一方面,我不断地重写代码,因为我不断地遇到错误。结果是全局未设置,我不断收到错误。
当我运行了你的,它也没有工作,我知道有什么是错误的。我从未想过要检查全局宽度是否已设置。
如果未设置全局,可能有一个变量来选择起始宽度或结束宽度。
我从你的代码中学到了比我正在读的书更多的东西。
我现在明白了,我不需要为assoc 43设置q pw,当我需要那个数字时,我可以简单地调用assoc 43。
我在编码方面仍然是一个穴居人,但我正在努力让这场大火熊熊燃烧。这应该是我的座右铭。英雄联盟
事实上-DXF组70通常是位编码的,因此如果使用其他属性集锁定,则可能不等于4(例如,使用位于锁定层上的对象测试代码,该锁定层在新视口中冻结)。
听你这么说太好了!
其中,以下代码为
(cdr (assoc 43 enx))
是否可以将该变量设为一个变量并添加一个(如果参数表示如果常数宽度为null并且(cdr(assoc 40))等于(cdr(assoc 41))则宽度将设置为起始宽度。
如果不同,请要求用户输入选择开始或结束
i、 e.(initget“开始-结束”
其中开始是(cdr(assoc 40)),结束是(cdr(assoc 41))
我认为这将结束所有错误的Lisp程序。 这正是我的想法,我不知道如何将你的答案构造为我之前帖子中的一个问题,但你已经回答了。(英语不是我的第一语言)。
感谢您的详细介绍! 提示:请查看dxf组码40和41,以找到起始和结束宽度。只需要放入一个条件语句,其中如果dxf组码43为空,则根据您的偏好移动到40或41。 (defun c:px2 ( / cmd ent enx ped pw1 )
(setvar 'errno 0)
(while (/= 52 (getvar 'errno))
(setvar 'errno 0)
(setq ent (car (entsel "\nSelect polyline <exit>: ")))
(cond
( (= 7 (getvar 'errno))
(prompt "\nMissed, try again.")
)
( (null ent)
(prompt "\nExit.")
)
( (/= "LWPOLYLINE" (cdr (assoc 0 (setq enx (entget ent)))))
(prompt "\nSelected object is not an LWPolyline.")
)
( (= 4 (logand 4 (cdr (assoc 70 (tblsearch "layer" (cdr (assoc 8 enx)))))))
(prompt "\nSelected polyline is on a locked layer.")
)
( (setq cmd (getvar 'cmdecho)
ped (getvar 'peditaccept)
)
(setvar 'cmdecho 0)
(setvar 'peditaccept 1)
(if (= (cdr (assoc 43 enx)) nil)
(if (= (cdr (assoc 41 enx)) (cdr (assoc 40 enx)))
(setq pw1 (cdr (assoc 40 enx)))
(initget "Start End (cdr (assoc 40 enx)) (cdr (assoc 41 enx)))
(setq pw1 (getkword "\nEnter an Option (Start/End): "))
)
(setq pw1 (cdr (assoc 43 enx)))
)
(command
"_.explode" ent
"_.pedit" "_m" "_p" "" "_w" pw1 ""
)
(setvar 'peditaccept ped)
(setvar 'cmdecho cmd)
)
)
)
(princ)
)
我尝试了我的穴居人编码,但不可能在“IF”语句中包含“IF”语句吗?还是我把“(=”语句写错了? 11
忘了写最后一句话!!!大声笑!
但现在当我做getkword时,它不接受开始或结束,它表示无效。
我知道看到initget是可以接受的关键字。现在我需要设置if语句。 RubberDinero,检查一下:
http://www.lee-mac.com/promptwithdefault.html
然后检查以下内容(尤其是最后一个示例代码-针对您的案例):
http://www.afralisp.net/autolisp/tutorials/conditionals.php
页:
1
[2]