Jef! 发表于 2022-7-6 00:04:06

MD_(viewbase)层-reacto

大家好!
 
首先我要感谢大家,因为大多数时候我都有一个问题,这个论坛是一个很好的资源,我可以在其中找到很多答案,而不需要创建一个线程
 
自从我们使用Acad 2014以来,我的一些同事已经开始使用viewbase样式的视图。由于我们有关于线宽的标准,我试图找到一种方法来设置viewbase图层的线宽默认值(MD\U注释、MD\U图案填充…),但没有成功当CAD创建它们时。由于我无法在创建时为它们提供默认值,所以我唯一的选择是在我们的模板上预先创建viewbase生成的所有层。问题是,当有人在创建第一个viewbase之前清除图形时(这是95%的情况-设计师制作设计/三维模型,清除,然后绘图员接管项目以制作fab平面图),MD\u层会被删除,当再次生成时,所有线宽都不符合我们的标准。
 
在我看来,我现在有两个选择。
1-每当设计师清除图层时,就把他们打得屁滚尿流(这不是很好……)
2-找到一个变通方法(我确实找到了,但我需要一些帮助来实现我的目标,因为我对反应堆并不十分熟悉)
 
基本上我需要的是一个反应器(我猜是在acaddoc.lsp中?)这样做:
 


reactor@plot: verify if layers (MD_Annotation, MD_Hatching, MD_Hidden, MD_Visible) exist

if not: resume plot

if they do exist: check lineweight setting to ensure they match our standards
(MD_visible = default, MD_hatching = .05mm, MD_hidden = .13mm, annotation=default)
if true: plot
if not: change values then plot

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

rkent 发表于 2022-7-6 00:30:40

使用低技术方法,在每个层的模板中创建一条非常小的线。在现有线条的顶部绘制,例如标题栏边框。

jdiala 发表于 2022-7-6 00:47:23

我不确定是否可以在绘图上使用reactor,因为命令reactor将在执行命令后启动(我可能错了)。可能取消定义plot命令并用例程替换它,或者只使用lisp with plot命令。
 
(defun C:vplot (/ laylist lwlist laytbl)
(setq laylist (list "MD_Annotation" "MD_Hatching" "MD_Hidden" "MD_Visible")
   lwlist(list -3 5 13 -3)
   laytbl(vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
)

(mapcar
(function
   (lambda (a b)
   (if
       (tblsearch "LAYER" a)
       (vla-put-Lineweight (vla-item laytbl a ) b)
       (princ (strcat "\nLayer " (strcase a) " does not exist")) )))
   laylist
   lwlist
)
(princ)
(initdia)
(command "_.plot")
)

BlackBox 发表于 2022-7-6 00:59:56

 
... 早在+/-2006年,我们使用点作为默认值,PDMODE==1。。。然后我找到了反应堆和ObjectDBX。

Jef! 发表于 2022-7-6 01:08:25

早上好,感谢您的反馈和帮助!
 
@rkent:我考虑在标题栏中添加一行,但希望能够在不使用这些图层时清除这些图层,主要是因为我们使用了很多外部参照。
 
想想看,我认为你的权利和反应堆启动后的命令。重新定义命令是一条路要走,它就像一个魅力!
 
我改变了3个小东西tho,因为在最后一行“MD\u xxx不存在”和plot命令发送的行之间没有行返回,最后一行是nil。(我还添加了另一层,我想控制它的线宽。)
 
CAD说:
 
现在看起来是这样的
(command "undefine" "plot")
(defun C:plot (/ laylist lwlist laytbl)
(setq laylist (list "DIM" "MD_Annotation" "MD_Hatching" "MD_Hidden" "MD_Visible")
   lwlist(list 9 -3 5 13 -3)
   laytbl(vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
)
(mapcar
(function
   (lambda (a b)
   (if
       (tblsearch "LAYER" a)
       (vla-put-Lineweight (vla-item laytbl a ) b)
       (princ (strcat "\nLayer " (strcase a) " does not exist")) )))
   laylist
   lwlist
)
(princ "\n")
(initdia)
(command "_.plot")
(princ)
)
 
CAD说:
 
谢谢你,jdiala!非常感谢!
页: [1]
查看完整版本: MD_(viewbase)层-reacto