乐筑天下

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

[编程交流] 参数过多问题

[复制链接]

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:24:23 | 显示全部楼层
你确定你的所有图案填充都在层“08_Proposed Data”上并且所有层都已解锁吗?
回复

使用道具 举报

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:33:16 | 显示全部楼层
嗯。也许是因为块内的图案填充在技术上是在bylayer上,块本身是在08_提出的数据上。也许应该在搜索要编辑的选定块时指定图层?
回复

使用道具 举报

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:37:17 | 显示全部楼层
我已经在下面这段代码的最新版本中修复了背景色问题。我唯一要解决的问题是为什么它不能处理动态块。有没有其他方法可以调用块内动态的图案填充?
 
编辑
你说得对,这是因为动态块内的图案填充设置为ByBlock layer,而不是08_建议的数据。我不理解为什么/如何在块内指定图案填充层,而不是块本身。层限定符的位置在哪里,以便编辑08_提议的数据层上块内的所有阴影?
 
我认为从我的观点来看,它应该指定块所在的图层,然后指定其中的图案填充选择,然后指定实体图案填充选择。似乎图层限定符影响的是块内的图案填充,而不是整个块。有什么建议吗?
 
 
  1. (defun c:planproposedhatch (/ doc)
  2. (or *colorobject*
  3.      (setq *colorobject*
  4.      (vla-getinterfaceobject
  5.        (vlax-get-acad-object)
  6.        (strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2))
  7.      )
  8.      )
  9. )
  10. (if
  11.    (null (vl-catch-all-error-p (vl-catch-all-apply 'vla-setrgb (list *colorobject* 255 255 255))))
  12.     (progn (vlax-for blk (vla-get-blocks (setq doc (vla-get-Activedocument (vlax-get-acad-object))))
  13.       (if (= :vlax-false (vla-get-isxref blk))
  14.         (vlax-for obj blk
  15.           (if (and (vlax-write-enabled-p obj)
  16.                           (= "08_Proposed Data" (vla-get-layer obj))
  17.                    (= "AcDbHatch" (vla-get-objectname obj))
  18.                    (= "SOLID" (strcase (vla-get-patternname obj)))   
  19.               )
  20.                    (progn
  21.                      (vla-setPattern obj acHatchPatternTypePreDefined "ANSI31")
  22.                      (vla-put-patternscale obj 12)
  23.               (vl-catch-all-apply 'vla-put-backgroundcolor (list obj *colorobject*))
  24.             )
  25.         )
  26.       )
  27.             )
  28.     )
  29.     (vla-regen doc acallviewports)
  30.     )
  31. )
  32. (vl-load-com)
  33. (princ)
  34. );defun

 
编辑2
 
我试着这样做,看看它是否只捕获块和get的layer属性,activex服务器错误“未知名称:layer”
 
  1. (defun c:planproposedhatch (/ doc)
  2. (or *colorobject*
  3.      (setq *colorobject*
  4.      (vla-getinterfaceobject
  5.        (vlax-get-acad-object)
  6.        (strcat "AutoCAD.AcCmColor." (substr (getvar "acadver") 1 2))
  7.      )
  8.      )
  9. )
  10. (if
  11.    (null (vl-catch-all-error-p (vl-catch-all-apply 'vla-setrgb (list *colorobject* 255 255 255))))
  12.     (progn
  13.     (vlax-for blk
  14.         (vla-get-blocks (setq doc (vla-get-Activedocument (vlax-get-acad-object))))
  15.     [color="red"]  (if (and (= "08_Proposed Data" (vla-get-layer blk))
  16.           (= :vlax-false (vla-get-isxref blk))
  17.           )[/color]
  18.         (vlax-for obj blk
  19.           (if (and (vlax-write-enabled-p obj)
  20.                    (= "AcDbHatch" (vla-get-objectname obj))
  21.                    (= "SOLID" (strcase (vla-get-patternname obj)))   
  22.               )
  23.                    (progn
  24.                      (vla-setPattern obj acHatchPatternTypePreDefined "ANSI31")
  25.                      (vla-put-patternscale obj 12)
  26.               (vl-catch-all-apply 'vla-put-backgroundcolor (list obj *colorobject*))
  27.             )
  28.         )
  29.       )
  30.             )
  31.     )
  32.     (vla-regen doc acallviewports)
  33.     )
  34. )
  35. (vl-load-com)
  36. (princ)
  37. );defun
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:07 , Processed in 0.756249 second(s), 56 queries .

© 2020-2025 乐筑天下

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