乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 66|回复: 10

[编程交流] 不知在哪里

[复制链接]
gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 07:25:10 | 显示全部楼层 |阅读模式
嘿,伙计们。。。。
 
请帮我修一下
 
当我尝试运行这个Lisp函数时,它会显示错误消息,如(命令:test未知命令“test”。按F1键可获取帮助。
未知命令“TEST”。按F1键获取帮助。
未知命令“TEST”。按F1键获取帮助。)
 
我不知道我到底错过了什么。。。请帮帮我
 
还有一个问题,如何将子函数设置为局部函数
 
  1. (defun c:test (/ old_cmh old_lay blocklist tb1 tb2 name2 blocklist)
  2. (setq old_cmh (getvar "cmdecho"))
  3. (setq old_lay (getvar "clayer"))
  4. (setvar "cmdecho" 0)
  5. (setq blocklist '())
  6. (setq tb1 (tblnext "BLOCK" ""))
  7. (setq name (cdr (assoc 2 tb1)))
  8. (setq blocklist (cons name blocklist))
  9. (tblnext "Block" t)
  10. (while
  11.    (setq tb2 (tblnext "Block"))
  12.     (setq name2 (cdr (assoc 2 tb2)))
  13.     (setq blocklist (cons name2 blocklist))
  14. )
  15. (GS:Place)
  16. (setvar "clayer" old_lay)
  17. (setvar "cmdecho" old_cmh)
  18. (princ)
  19. )
  20. ;;Sub
  21. (Defun GS:Place (/ pnt first_block find first nxt_blk find )
  22. (setq pnt 0)
  23. (setq first_block (nth pnt blocklist))
  24. (VL-CMDF "LAYER" "M" first_block "c" "2" "" "")
  25. (setq find_first (ssget "x" (list (cons 0 "INSERT") (cons 2 first_block))))
  26. (vl-cmdf "chprop" find_first "" "la" first_block "" "")
  27. (repeat (1- (length blocklist))
  28.    (setq nxt_blk (nth (1+ pnt) blocklist))
  29.    (VL-CMDF "LAYER" "M" nxt_blk "c" "2" "" "")
  30.    (setq find (ssget "x" (list(cons 0 "INSERT") (cons 2 nxt_blk))))
  31.    (vl-cmdf "chprop" find "" "la" nxt_blk "" "")
  32.    (setq pnt (1+ pnt))
  33. )
  34. (princ)
  35. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 07:34:38 | 显示全部楼层
chprop线处的额外“”。。
 
建议:
-使用entmod更改块的图层属性,使用chprop往往会给您带来当前空间问题中未选择/未选择块的问题。
-在tblnext循环内调用更改层例程。
-动态块不会用普通(cons 2 blknme)线选择。
-在图层生成过程中,将拒绝匿名块名,例如“*U5”
-外部参照嵌套块名称也会成为一个问题
 
如果你需要帮助,就喊一声
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 07:42:14 | 显示全部楼层
是的,pBe我需要你的帮助来纠正这个代码。。。。
请给我提供正确的代码。。。
 
储罐u
 
Gs公司
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 07:43:57 | 显示全部楼层
我可以带你去gS7。还有几个问题。
 
-外部参照是否包含为有效块?(主外部参照,即..不是嵌套的外部参照)?
-你们是故意锁层的吗?在处理之前,我们可能需要先解锁层,或者不去理会它。会是哪一个?
-你使用动态块吗?
-所有新层的颜色将为2(黄色)?
-块颜色和线型特性是“bylayer”和“图层0上的图元”?
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 07:54:36 | 显示全部楼层
 
1.不包括外部参照
2.是的,我们是故意锁定图层的
是的,我们使用动态块
4、用户要求的颜色
5、块颜色和线型属性为bylayer
 
很抱歉延迟回复pbe
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 07:59:14 | 显示全部楼层
 
gs7,帮我们一把。
如果块位于锁定层上,是否意味着不处理该块?
那么,什么颜色适合哪一层?
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 08:06:00 | 显示全部楼层
第2项(我们应该解锁他们的图层,并为tat创建图层……)
第4项所有层都需要绿色,或者用户可以选择他/她想要的颜色
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:12:44 | 显示全部楼层
块到层
 
  1. (defun c:BTLay ( / mklay LunL aDoc  layers lklst)
  2. (vl-load-com)  
  3. (defun mklay (nm c laycoll / x)
  4.         (if (not (tblsearch "Layer" nm))
  5.            (setq x (vla-add laycoll nm))
  6.                   )
  7. [b][color="blue"](vla-put-color (vla-item laycoll nm) c)[/color][/b])
  8. (defun LunL (lc lst / llst)
  9. (if lst (foreach n lst
  10.      (vla-put-lock (vla-item lc n) :vlax-true))
  11.    (vlax-for a        lc
  12.      (if (eq (vla-get-lock a) :Vlax-true)
  13. (progn
  14.   (setq llst (cons (vla-get-name a) llst))
  15.   (vla-put-lock a :vlax-false)))))
  16. llst
  17. )        
  18. (setq aDoc (vla-get-ActiveDocument (vlax-get-acad-object))
  19.       Layers (vla-get-layers aDoc))
  20. (Setq lklst (lunl layers nil))                             
  21. (vlax-for layout (vla-get-layouts aDoc)
  22.     (vlax-for i (vla-get-block layout)
  23.       (if (and        
  24.                 (= (vla-get-ObjectName i) "AcDbBlockReference")
  25.                 (not (vlax-property-available-p i 'Path))       
  26.           )
  27.         (progn
  28. (mklay (setq bn (vlax-get i [b][color="blue"](if (vlax-property-available-p i 'Effectivename)
  29.                           'EffectiveName 'Name))) [/color][/b]3 layers)
  30.                 (vla-put-layer i bn))
  31.       )
  32.     )
  33.   )
  34. (lunl layers lklst)
  35. (princ)
  36. )

 
命令:BTlay
 
编辑:vlax-property-available-p并更新现有图层的颜色。
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 08:14:16 | 显示全部楼层
哦储罐u pBe。。你太棒了
 
它在AutoCAD 2008中运行良好。。。。。
我也尝试了autoCAD 2002版本,但它不起作用。。。。显示错误(错误:无函数定义:VLA-GET-EFFECTIVENAME)
回复

使用道具 举报

6

主题

249

帖子

247

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 08:20:36 | 显示全部楼层
@pBe公司
在我的a2008中,如果一个块有两个以上的属性,则只有块和一个属性更改为颜色3(绿色)
难道所有属性和块都不应该改变吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 04:55 , Processed in 0.800833 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表