明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4169|回复: 21

[提问] 填充的图层名

[复制链接]
发表于 2013-10-31 10:44:21 | 显示全部楼层 |阅读模式
下面是一个多段线填充的程序,请问怎样将填充的图层名自分别改为“多段线图层名+填充”?程序功能不改变,同样可以框选和点选。


(defun C:tt (/ old_clayer old-layer HPNAME)
  (vl-load-com)
  (command "undo" "be")
  (setvar "CMDECHO" 0)
  (setq old_clayer (getvar "clayer"))
  (setq old-layer (tblsearch "layer" "PUB_HATCH"))
  (if (null old-layer) (command "-layer" "m" "PUB_HATCH" "c" 252 "" ""))
(command  "layer"  "t"  "PUB_HATCH"  "")
(command  "layer"  "on"  "PUB_HATCH"  "")
  (setvar "clayer" "PUB_HATCH")
  (vla-endundomark
    (vla-get-activedocument
      (vlax-get-acad-object)
    )
  )
  (vla-startundomark
    (vla-get-activedocument
      (vlax-get-acad-object)
    )
  )
  (setq HPNAME (getvar "HPNAME"))
  (setvar "HPNAME" "SOLID")
  (vl-catch-all-apply
    '(lambda (/ E I SS)
       (and (setq SS (ssget '((0 . "LWPOLYLINE"))))
            (repeat (setq I (sslength SS))
              (and (setq E (ssname SS (setq I (1- I))))
                   (command ".-BHATCH" "S" E "" "")
                   ;;(command "hatch" "solid" E "")
              )
            )
       )
     )
  )
  (setvar "HPNAME" HPNAME)
  (vla-endundomark
    (vla-get-activedocument
      (vlax-get-acad-object)
    )
  )
  (setvar "clayer" old_clayer)
  (command "undo" "e")
  (princ)
)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-7-25 17:53:30 | 显示全部楼层
llsheng_73 发表于 2013-11-24 13:54
(defun C:tt (/ old_clayer old-layer HPNAME SETLAYER_LSP)
  (defun SETLAYER_LSP(LAY CLR)
    (if (= ...

好像圆不能填充
发表于 2020-8-15 10:27:20 | 显示全部楼层
好像圆不能填充
发表于 2013-10-31 12:56:05 | 显示全部楼层

点表偏移(模拟OFFSET命令对多线段的处理)

本帖最后由 llsheng_73 于 2013-10-31 13:00 编辑

(and (setq E (ssname SS (setq I (1- I))))
                    (command ".-BHATCH" "S" E "" "")

                    ;;(command "hatch" "solid" E "")
               )
这里setq语句加上一个变量根据(CDR(assoc 8 E))得到E的图层名。加上“填充”得到新的图层名赋给它,下边在填充前把刚才得到的图层名设为当前图层后再填充
  1. (and (setq E (ssname SS (setq I (1- I)))LA(strcat(cdr(assoc 8 e))"填充")) ;;;我是真心没看懂那个AND起什么作用
  2.                     (command "LAYER" "M"LA "S"LA"")
  3.                     (command ".-BHATCH" "S" E "" "")
  4.                     ;;(command "hatch" "solid" E "")
  5.                )
 楼主| 发表于 2013-10-31 16:50:49 | 显示全部楼层
llsheng_73 发表于 2013-10-31 12:56
(and (setq E (ssname SS (setq I (1- I))))
                    (command ".-BHATCH" "S" E "" "")
    ...

谢谢帮忙,不过好像不行
发表于 2013-10-31 17:08:04 | 显示全部楼层
adc 发表于 2013-10-31 16:50
谢谢帮忙,不过好像不行

为什么我电脑上能行?
发表于 2013-10-31 17:11:12 | 显示全部楼层
本帖最后由 llsheng_73 于 2013-10-31 17:14 编辑
adc 发表于 2013-10-31 16:50
谢谢帮忙,不过好像不行

不行话那就这样吧,(SETQ 语句不用管它了,
下边COMMAND改改
(command "-LAYER" "N" la)
(setvar "CLAYER" la)

评分

参与人数 1明经币 +1 收起 理由
adc + 1 赞一个!

查看全部评分

 楼主| 发表于 2013-10-31 19:38:15 | 显示全部楼层
llsheng_73 发表于 2013-10-31 17:11
不行话那就这样吧,(SETQ 语句不用管它了,
下边COMMAND改改
(command "-LAYER" "N" la)

改过也不可以
(defun C:tt (/ old_clayer old-layer HPNAME)
  (vl-load-com)
  (command "undo" "be")
  (setvar "CMDECHO" 0)
  (setq old_clayer (getvar "clayer"))
  (setq old-layer (tblsearch "layer" "PUB_HATCH"))
  (if (null old-layer) (command "-layer" "m" "PUB_HATCH" "c" 252 "" ""))
(command  "layer"  "t"  "PUB_HATCH"  "")
(command  "layer"  "on"  "PUB_HATCH"  "")
  (setvar "clayer" "PUB_HATCH")
  (vla-endundomark
    (vla-get-activedocument
      (vlax-get-acad-object)
    )
  )
  (vla-startundomark
    (vla-get-activedocument
      (vlax-get-acad-object)
    )
  )
  (setq HPNAME (getvar "HPNAME"))
  (setvar "HPNAME" "SOLID")
  (vl-catch-all-apply
    '(lambda (/ E I SS)
       (and (setq SS (ssget '((0 . "LWPOLYLINE"))))
            (repeat (setq I (sslength SS))
              (and (setq E (ssname SS (setq I (1- I)))LA(strcat(cdr(assoc 8 e))"填充"))
                    (command "-LAYER" "N" la)
                     (setvar "CLAYER" la)
                    (command ".-BHATCH" "S" E "" "")
                    ;;(command "hatch" "solid" E "")
               )
            )
       )
     )
  )
  (setvar "HPNAME" HPNAME)
  (vla-endundomark
    (vla-get-activedocument
      (vlax-get-acad-object)
    )
  )
  (setvar "clayer" old_clayer)
  (command "undo" "e")
  (princ)
)
 楼主| 发表于 2013-11-1 14:19:01 | 显示全部楼层
自己顶起,继续请教
 楼主| 发表于 2013-11-4 09:17:52 | 显示全部楼层
自己顶起,继续请教
 楼主| 发表于 2013-11-5 13:10:36 | 显示全部楼层
自己顶起,继续请教
 楼主| 发表于 2013-11-19 13:31:50 | 显示全部楼层
llsheng_73 发表于 2013-10-31 17:11
不行话那就这样吧,(SETQ 语句不用管它了,
下边COMMAND改改
(command "-LAYER" "N" la)

还是要麻烦你帮忙,现在程序还是不能执行,我已经把完整的贴出来了麻烦帮忙看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 20:56 , Processed in 0.251836 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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