ninja37 发表于 2022-4-13 22:41

请大神编写程序,工作中经常用到,机器上用的。

本帖最后由 ninja37 于 2022-4-14 17:44 编辑

请大神编写程序,工作中经常用到,机器上用的。要求如下:
输入命令后
第1步程序判断是否有autocut图层有的话跳到第2步,没有就创建autocut图层,颜色红色1,线型Continuous
第2步   关闭autocut图层
第3步   运行autocad原生命令标注dimlinear    (标注无图层颜色样式等等要求 标注无设置捕捉点的要求)。
第4步   打开autocut图层

第5步   设置autocut图层为当前层,最后退出程序

程序对各位大师来说比较简单,请帮一下忙    简单说 就是关掉autocut层,手动标注好尺寸后,再打开autocut层


xj6019 发表于 2022-4-13 22:41

这样应该可以!
(defun c:NMM (/ ob-layer)
      (if (not (tblsearch "layer" "autocut"))
                (command "-layer" "m" "autocut" "c" "1" "" "lt" "continuous""" "")
      )
      (command "layer" "OFF" "autocut" "")
      (command "dimlinear" pause pause pause)
                (command "layer" "on" "autocut" "")
      (setvar "clayer" "autocut")
      (princ)
)

xj6019 发表于 2022-4-14 17:20

简单说 就是为了把标注放在autocut 图层吧感觉描述的有点乱没咋看明白

ninja37 发表于 2022-4-14 17:44

xj6019 发表于 2022-4-14 17:20
简单说 就是为了把标注放在autocut 图层吧感觉描述的有点乱没咋看明白

简单说    就是关掉autocut层,手动标注好尺寸后,再打开autocut层

xj6019 发表于 2022-4-14 18:08

这个样?

(defun c:NM (/ ob-layer)
        (if (not (tblsearch "layer" "autocut"))
                (command "-layer" "m" "autocut" "c" "1" "" "lt" "continuous""" "")
        )
        (setq Ob-layer (vlax-ename->vla-object(tblobjname "layer" "autocut" )))
        (vla-put-LayerOn Ob-layer :vlax-false)
        (command "dimlinear" pause pause pause)
        (vla-put-LayerOn Ob-layer :vlax-true)
        (setvar "clayer" "autocut")
        (princ)
)

ninja37 发表于 2022-4-14 19:11

本帖最后由 ninja37 于 2022-4-14 19:20 编辑

xj6019 发表于 2022-4-14 18:08
这个样?

(defun c:NM (/ ob-layer)

你好,程序很好用 实现了全部要求的功能,就是有一点麻烦,可能代码太高级了还是怎么的,在cad2016可以完美运行 但是在机器上是cad2004提示错误 no function definition: vlax-ename->vla-object          可能CAD2004不支持这个      大师麻烦你再改一下改成2004能运行的

ninja37 发表于 2022-4-15 10:59

可以用来,CAD2004也能用,谢谢帮助。

xj6019 发表于 2022-4-15 11:01

ninja37 发表于 2022-4-15 10:59
可以用来,CAD2004也能用,谢谢帮助。

简单的小问题可以直接群里交流就行的
页: [1]
查看完整版本: 请大神编写程序,工作中经常用到,机器上用的。