明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4005|回复: 11

[提问] 同时在多个图层画图

[复制链接]
发表于 2014-5-26 23:02 | 显示全部楼层 |阅读模式
5明经币
请问大大,我需要在多个图层画一图元,用lisp 怎么写,是在其中一图层画好图元后在复制到其它图层,还是直接打开多个图层画图呢?选择单个图层或多个图层的选项应该用哪个函数啊?
发表于 2014-5-26 23:03 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-5-27 17:30 编辑

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

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

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

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


回复

使用道具 举报

发表于 2014-5-26 23:38 来自手机 | 显示全部楼层
直接先画好图,然后复制几份,分别指定图层就好来自: Android客户端
回复

使用道具 举报

发表于 2014-5-27 07:52 | 显示全部楼层
提示:在一个图层绘图,copy到其他图层即可
回复

使用道具 举报

发表于 2014-5-27 09:20 | 显示全部楼层
用entmake 直接指定图层
回复

使用道具 举报

发表于 2014-5-27 16:36 | 显示全部楼层
llsheng_73 发表于 2014-5-27 07:46

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

这个不可以吧....
回复

使用道具 举报

发表于 2014-5-27 17:28 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-5-27 17:30 编辑
q3_2006 发表于 2014-5-27 16:36
(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"))
并且后边列表里边的图层都存在
回复

使用道具 举报

发表于 2014-5-28 16:40 | 显示全部楼层
llsheng_73 发表于 2014-5-27 07:46

L大喜欢用大写??
回复

使用道具 举报

发表于 2014-5-28 16:50 | 显示全部楼层
vormittag 发表于 2014-5-27 09:20
用entmake 直接指定图层

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

使用道具 举报

 楼主| 发表于 2014-5-28 20:16 | 显示全部楼层
发表于 昨天 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个图层同时画图,每个图层的颜色不一样,应该怎么写啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-21 05:11 , Processed in 0.172724 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表