gaics 发表于 2021-8-13 11:31:31

画保温棉

本帖最后由 gaics 于 2021-8-15 12:53 编辑

写了一段画保温棉的代码,有需要的拿去用。
<2021.8.13更新1>增加点选设置保温棉厚度(取点到垂足的距离)。
(if (null (setq pt3 (getpoint pt2 "\n输入保温棉的厚度[默认厚度50mm]:")))
    (setq d 50)
    (setq d (distance (PerPt pt3 pt1 pt2) pt3))
)

<2021.8.14更新2>替换<更新1>,优化厚度设置方法:
(princ"\n输入保温棉的厚度[默认厚度50mm]:\n")
(setq lastpt(getvar "Lastprompt"))
(if (setq pt3 (getpoint pt2))
    (if (equal (getvar "Lastprompt") lastpt)
      (setq d (distance (PerPt pt3 pt1 pt2) pt3))
      (setq d (atof(getvar "Lastprompt")))
    )
    (setq d 50)
)
如果是输入厚度值,需要用“回车”键或者“右键”确认。使用“空格”会出错!
此处感谢@llsheng_73,73哥提供的两个思路:
http://bbs.mjtd.com/forum.php?mo ... 3894&fromuid=410342
http://bbs.mjtd.com/forum.php?mo ... 2563&fromuid=410342

<2021.8.15更新3>替换<更新2>,用vla-getpoint方法解决输入厚度值使用“空格”确认会出错的问题:
但是此时不能切换正交,否则又出错,唉!!
(setq      util (vla-get-utility
               (vla-get-activedocument
               (vlax-get-acad-object)
               )
             )
)
(princ "\n输入保温棉的厚度[默认50mm]:\n")
(setq lastpt(getvar "Lastprompt"))
(if (setq pt3 (vlax-safearray->list(vlax-variant-value(vla-getpoint util (vlax-3D-point pt2)))))
    (if      (equal (getvar "Lastprompt") lastpt)
      (setq d (distance (PerPt pt3 pt1 pt2) pt3))
      (setq d (atof(getvar "Lastprompt")))
    )
    (setq d 50)
)







yanchao316 发表于 2021-8-14 16:24:28

以前收集的一位老师画岩棉,和楼主的功能相似。使用也不错

magicheno 发表于 2021-8-13 20:48:05

大佬给力啊~~~

fxlt619 发表于 2021-8-14 11:23:41

大佬,要是能增加弧形弧内外画岩棉就更好了

emk 发表于 2021-8-19 13:29:03

看看写法有什么特别

小毛草 发表于 2021-8-19 16:58:03

输入保温棉终点<--:
输入保温棉的厚度[默认50mm]:
命令: Automation 错误。 用户输入的是关键字

小毛草 发表于 2021-8-19 16:58:14

出错为什么?

gaics 发表于 2021-8-19 17:03:15

小毛草 发表于 2021-8-19 16:58
出错为什么?

如何操作的?

sfmw 发表于 2021-8-20 10:47:45

你那个好像只能逆时针,顺时针呢

675513233 发表于 2025-1-5 03:20:52

当输入非50厚度时候比如100间距还是10的圆弧,能否动态调整?跟着等比例变化呢,不然当做100厚的棉的时候感觉特别密多
页: [1] 2
查看完整版本: 画保温棉