小师傅 发表于 2014-5-26 23:02:59

同时在多个图层画图

请问大大,我需要在多个图层画一图元,用lisp 怎么写,是在其中一图层画好图元后在复制到其它图层,还是直接打开多个图层画图呢?选择单个图层或多个图层的选项应该用哪个函数啊?

llsheng_73 发表于 2014-5-26 23:03:00

本帖最后由 llsheng_73 于 2014-5-27 17:30 编辑

(SETQ P(GETPOINT))(FOREACH X '("0" "DGX")
(command"layer""M" x "")
(command "POINT" p ""))

(SETQ P(GETPOINT))
(mapcar'(lambda(x)(entmake(list'(0 . "point")(cons 8 x)(cons 10 p))))'("0" "DGX"))
(SETQ P(GETPOINT))
(FOREACH X '("0" "DGX")
   (IF(NULL (TBLOBJNAME"LAYER"x))
    (entmake (list'(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")
   '(70 . 0)(cons 2 x))))
(ENTMAKE (LIST'(0 . "POINT")(CONS 8 X)(CONS 10 P))))

(SETQ P(GETPOINT))
(FOREACH X '(("0"1)("DGX" 3))
(IF(NULL (TBLOBJNAME"LAYER"(CAR X)))
    (entmake (list'(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")
       '(70 . 0)(cons 2 (CAR X)))))
(ENTMAKE (LIST'(0 . "POINT")(CONS 8 (CAR X))(CONS 62 (LAST X))(CONS 10 P))))

hhh454 发表于 2014-5-26 23:38:51

直接先画好图,然后复制几份,分别指定图层就好

mycad 发表于 2014-5-27 07:52:25

提示:在一个图层绘图,copy到其他图层即可

vormittag 发表于 2014-5-27 09:20:47

用entmake 直接指定图层

q3_2006 发表于 2014-5-27 16:36:51

llsheng_73 发表于 2014-5-27 07:46 static/image/common/back.gif


(SETQ P(GETPOINT))
(apply'entmake(mapcar'(lambda(x)(list'(0 . "point")(cons 8 x)(cons 10 p)))'("0" "DGX")))

这个不可以吧....

llsheng_73 发表于 2014-5-27 17:28:15

本帖最后由 llsheng_73 于 2014-5-27 17:30 编辑

q3_2006 发表于 2014-5-27 16:36 static/image/common/back.gif
(SETQ P(GETPOINT))
(apply'entmake(mapcar'(lambda(x)(list'(0 . "point")(cons 8 x)(cons 10 p)))'("0 ...
是不行,得改成(mapcar'(lambda(x)(entmake(list'(0 . "point")(cons 8 x)(cons 10 p))))'("0" "DGX"))
并且后边列表里边的图层都存在

ysq101 发表于 2014-5-28 16:40:04

llsheng_73 发表于 2014-5-27 07:46 static/image/common/back.gif


L大喜欢用大写??

ysq101 发表于 2014-5-28 16:50:51

vormittag 发表于 2014-5-27 09:20 static/image/common/back.gif
用entmake 直接指定图层

这个正解啊。。。。复制都太慢了~~~
给定几个必需的变量
直接MAKE几次就好了
快多了

小师傅 发表于 2014-5-28 20:16:25


发表于 昨天 07:46 |只看该作者







本帖最后由 llsheng_73 于 2014-5-27 17:30 编辑













普通浏览复制代码


01.(SETQ P(GETPOINT))(FOREACH X '("0" "DGX")


02.(command"layer""M" x "")


03.(command "POINT" p ""))









普通浏览复制代码


01.(SETQ P(GETPOINT))


02.(mapcar'(lambda(x)(entmake(list'(0 . "point")(cons 8 x)(cons 10 p))))'("0" "DGX"))



















普通浏览复制代码


01.(SETQ P(GETPOINT))


02.(FOREACH X '("0" "DGX")


03.   (IF(NULL (TBLOBJNAME"LAYER"x))


04.    (entmake (list'(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")


05.   '(70 . 0)(cons 2 x))))


06.(ENTMAKE (LIST'(0 . "POINT")(CONS 8 X)(CONS 10 P))))

















普通浏览复制代码


01.(SETQ P(GETPOINT))


02.(FOREACH X '(("0"1)("DGX" 3))


03.(IF(NULL (TBLOBJNAME"LAYER"(CAR X)))


04.    (entmake (list'(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")


05.       '(70 . 0)(cons 2 (CAR X)))))


06.(ENTMAKE (LIST'(0 . "POINT")(CONS 8 (CAR X))(CONS 62 (LAST X))(CONS 10 P))))




学习了,那我想同在“DGX","DGX1","DGX2"3个图层同时画图,每个图层的颜色不一样,应该怎么写啊
页: [1] 2
查看完整版本: 同时在多个图层画图