woodman78 发表于 2022-7-5 19:45:09

暂停lisp以与进行交互

你好
我有一个lisp,可以通过选择闭合多段线或绘制多段线来创建触觉铺砌。我想在“绘制”选项中插入一个动态块,以形成触觉铺砌的构造线,但我希望能够调整块以适应当地条件,然后恢复命令并沿块轮廓绘制。有谁能指导我吗?
 
(定义C:拟议的触觉红(/ang coords elist midp offsetted offsetted1 of pt p1 p2 p3 pline side SUCE SUOM sum SUAB SUAD SUCL SUCR)(setq SUCE(getvar“cmdecho”)(setq SUOM(getvar“orthomode”)(setq sum(getvar“osmode”))(setq SUAB(getvar“angbase”)(setq SUAD(getvar“angdir”))(setq SUCL(getvar“clayer”))(setq SUCR(getvar“cecolor”))(setq vl1(列表(cons 0“层”);实体名称(cons 100“AcDbSymbolTableRecord”);开放记录(cons 100“AcDbLayerTableRecord”);定位图层表(cons 2“CCC\u布局图\u建议的触觉\u铺路图\u红色\u实心图案填充”);层名称(cons 6“连续”);线型(cons 62 253);颜色=浅灰色(cons 70 0);状态(cons 290 1);1=绘图,0=不绘图);实体列表结束)(entmake vl1)(setq vl1(列表(cons 0“层”);实体名称(cons 100“AcDbSymbolTableRecord”);开放记录(cons 100“AcDbLayerTableRecord”);定位层表(cons 2“CCC\u布局图\u提议的触觉\u铺路图\u红色\u十六进制图案”);层名称(cons 6“连续”);线型(cons 62 7);颜色=浅灰色(cons 70 0);状态(cons 290 1);1=绘图,0=不绘图);实体列表结束)(entmake vl1)(setq vl1(列表(cons 0“层”);实体名称(cons 100“AcDbSymbolTableRecord”);开放记录(cons 100“AcDbLayerTableRecord”);定位层表(cons 2“CCC\u LAYOUT\u Proposed\u Tactile\u Paying\u Red\u Outline”);层名称(cons 6“连续”);线型(cons 62 7);颜色=浅灰色(cons 70 0);状态(cons 290 1);1=绘图,0=不绘图);实体列表结束)(entmake vl1)(setq vl1(列表(cons 0“层”);实体名称(cons 100“AcDbSymbolTableRecord”);开放记录(cons 100“AcDbLayerTableRecord”);定位层表(cons 2“CCC_LAYOUT_Proposed_Tactile_Paying_Red_Construction”);层名称(cons 6“连续”);线型(cons 62 7);颜色=浅灰色(cons 70 0);状态(cons 290 1);1=绘图,0=不绘图);实体列表结束)(entmake vl1)(命令“_.-layer”“\u C”“\u T”“255204204”“CCC\U LAYOUT\u Proposed\u Tactile\u paying\u Red\u Solid\u Hatch”“)(命令“_.-layer”“\u LW”“0”“CCC\u LAYOUT\u Proposed\u Tactile\u paying\u Red\u Outline”“)(命令“_.-layer”“\u LW”“0”“CCC\u LAYOUT\u Proposed\u Tactile\u paying\u Red\u Hex\u Hatch”“)(setvar“clayer”“CCC\u LAYOUT\u Proposed\u tactical\u Le_Paying_Red_Solid_Hatch”)(setvar“cecolor”“1”)(initget“D S”)(setq选项(getkword“\n选择绘制边界或选择边界::”)(cond(=选项“D”)(拟议的_Tactile_Red_Draw))(=选项“S”)(拟议的_Tactile_Red_Select)));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(defun provided_Tactile_Red_select()(setq pline(entsel“\n选择闭合的多段线边界:)(provided_Tactile_Red_resume));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(defun提议的触觉图()(原则是“将构造块放置在正确的位置,并根据当地条件进行调整。”)(setvar“clayer”“CCC\u LAYOUT\u Proposed\u Tactile\u Paying\u Red\u Construction”)(命令“.insert”“Red\u Tactile\u Construction”“\u scale”“1”pause”“)(原则“\n绘制红色触觉铺砌轮廓:”)(setvar“cecolor”“1”)(setvar“plinegen”1)(命令“)(同时(=1(logand 1(getvar“cmdactive”)))(命令暂停))(setq pline(entlast)elist(entget pline))(setvar“cecolor”“Bylayer”YER”)(命令“_.draworder”pline“_F”);

BIGAL 发表于 2022-7-5 20:06:53

如果您先绘制轮廓并保存对象等,然后可以插入Red\U tac。。并使用这些属性设置块。不知道你是怎么想的?
 
我没有使用足够的dynaic块来评论,也许可以将其作为一个小lisp来测试。

woodman78 发表于 2022-7-5 20:27:00

谢谢Bigal,但不是我想要的。

woodman78 发表于 2022-7-5 20:37:22

我在这方面取得了一些进展,现在插入了块,命令暂停,然后当我再次单击时,它会继续它应该继续。唯一的问题是,当它暂停时,它不允许与动态块交互。
 
有人能帮忙吗?
 
 
(defun提议的触觉图()(原则是“将构造块放置在正确的位置,并根据当地条件进行调整。”)(setvar“clayer”“CCC\u LAYOUT\u Proposed\u Tactile\u Paying\u Red\u Construction”)(命令“-Insert”“Red\u Tactile\u Construction”pause“1”“1”“0”pause pause pause);(命令“_.insert”“Red\u Tactile\u Construction”“\u scale”“1”pause”“)(原理“\n绘制红色触觉铺砌轮廓:”)(setvar“cecolor”“1”)(setvar“plinegen”1)(命令“.u pline”)(while(=1(logand 1(getvar“cmdactive”))(命令暂停))(setq pline(entlast)elist(entget pline))(setvar“cecolor”“Bylayer”)(命令“_.draworder“pline”“”);

woodman78 发表于 2022-7-5 20:51:39

有没有办法暂停lisp以与动态块交互,然后右键单击继续?
页: [1]
查看完整版本: 暂停lisp以与进行交互