乐筑天下

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

[编程交流] MD_(viewbase)层-reacto

[复制链接]

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-6 00:04:06 | 显示全部楼层 |阅读模式
大家好!
 
首先我要感谢大家,因为大多数时候我都有一个问题,这个论坛是一个很好的资源,我可以在其中找到很多答案,而不需要创建一个线程
 
自从我们使用Acad 2014以来,我的一些同事已经开始使用viewbase样式的视图。由于我们有关于线宽的标准,我试图找到一种方法来设置viewbase图层的线宽默认值(MD\U注释、MD\U图案填充…),但没有成功当CAD创建它们时。由于我无法在创建时为它们提供默认值,所以我唯一的选择是在我们的模板上预先创建viewbase生成的所有层。问题是,当有人在创建第一个viewbase之前清除图形时(这是95%的情况-设计师制作设计/三维模型,清除,然后绘图员接管项目以制作fab平面图),MD\u层会被删除,当再次生成时,所有线宽都不符合我们的标准。
 
在我看来,我现在有两个选择。
1-每当设计师清除图层时,就把他们打得屁滚尿流(这不是很好……)
2-找到一个变通方法(我确实找到了,但我需要一些帮助来实现我的目标,因为我对反应堆并不十分熟悉)
 
基本上我需要的是一个反应器(我猜是在acaddoc.lsp中?)这样做:
 
  1. reactor@plot: verify if layers (MD_Annotation, MD_Hatching, MD_Hidden, MD_Visible) exist
  2. if not: resume plot
  3. if they do exist: check lineweight setting to ensure they match our standards
  4. (MD_visible = default, MD_hatching = .05mm, MD_hidden = .13mm, annotation=default)
  5. if true: plot
  6. if not: change values then plot

 
如果MD_层确实存在,我不确定是否应该查看它们的线宽值以将其与我们的标准进行比较,如果没有,则更改其值,或者如果层存在,则是否应该直接设置其线宽值。
 
提前感谢您的帮助
干杯
杰夫!
回复

使用道具 举报

10

主题

895

帖子

887

银币

初来乍到

Rank: 1

铜币
49
发表于 2022-7-6 00:30:40 | 显示全部楼层
使用低技术方法,在每个层的模板中创建一条非常小的线。在现有线条的顶部绘制,例如标题栏边框。
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 00:47:23 | 显示全部楼层
我不确定是否可以在绘图上使用reactor,因为命令reactor将在执行命令后启动(我可能错了)。可能取消定义plot命令并用例程替换它,或者只使用lisp with plot命令。
 
  1. (defun C:vplot (/ laylist lwlist laytbl)
  2. (setq laylist (list "MD_Annotation" "MD_Hatching" "MD_Hidden" "MD_Visible")
  3.      lwlist  (list -3 5 13 -3)
  4.      laytbl  (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
  5. )
  6. (mapcar
  7. (function  
  8.    (lambda (a b)
  9.      (if
  10.        (tblsearch "LAYER" a)
  11.        (vla-put-Lineweight (vla-item laytbl a ) b)
  12.        (princ (strcat "\nLayer " (strcase a) " does not exist")) )))
  13.      laylist
  14.      lwlist
  15. )
  16. (princ)
  17. (initdia)
  18. (command "_.plot")
  19. )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 00:59:56 | 显示全部楼层
 
... 早在+/-2006年,我们使用点作为默认值,PDMODE==1。。。然后我找到了反应堆和ObjectDBX。
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-6 01:08:25 | 显示全部楼层
早上好,感谢您的反馈和帮助!
 
@rkent:我考虑在标题栏中添加一行,但希望能够在不使用这些图层时清除这些图层,主要是因为我们使用了很多外部参照。
 
想想看,我认为你的权利和反应堆启动后的命令。重新定义命令是一条路要走,它就像一个魅力!
 
我改变了3个小东西tho,因为在最后一行“MD\u xxx不存在”和plot命令发送的行之间没有行返回,最后一行是nil。(我还添加了另一层,我想控制它的线宽。)
 
CAD说:
 
现在看起来是这样的
  1. (command "undefine" "plot")
  2. (defun C:plot (/ laylist lwlist laytbl)
  3. (setq laylist (list "DIM" "MD_Annotation" "MD_Hatching" "MD_Hidden" "MD_Visible")
  4.      lwlist  (list 9 -3 5 13 -3)
  5.      laytbl  (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
  6. )
  7. (mapcar
  8. (function  
  9.    (lambda (a b)
  10.      (if
  11.        (tblsearch "LAYER" a)
  12.        (vla-put-Lineweight (vla-item laytbl a ) b)
  13.        (princ (strcat "\nLayer " (strcase a) " does not exist")) )))
  14.      laylist
  15.      lwlist
  16. )
  17. (princ "\n")
  18. (initdia)
  19. (command "_.plot")
  20. (princ)
  21. )

 
CAD说:
 
谢谢你,jdiala!非常感谢!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:30 , Processed in 1.347773 second(s), 62 queries .

© 2020-2025 乐筑天下

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