乐筑天下

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

vlax曲线的vba等效值-

[复制链接]

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 22:26:10 | 显示全部楼层 |阅读模式
大家好
 
我试图编写一个vba例程,该例程允许我通过指定三个点来获得多段线形状的起始宽度和长度。多段线通常由正交直线组成(但并不总是如此)
 
点1和2是第一条边的起点和终点,从中可以得到第一条边的起始宽度和角度。点3是另一侧的任意点。间隔的长度是点3和第一条边(连接点1和2的线)之间的垂直距离。
 
我已经使用vlax curve getClosestPointTo编写了一个(粗糙的)LISP例程,但现在我想编写一个vba例程来实现同样的功能。
 
例行程序的目的是协助制作预制楼板布置图。多段线形状将是建筑图形中的间隔;宽度将提供预制梁的长度;长度将提供填充地板的长度。
 
有谁能帮我或给我指出正确的方向吗?
 
非常感谢
 
 
 
  1. ;; dtr - degrees to radians
  2. ;; rtd - radians to degrees
  3. (defun dtr (a)
  4. (* pi (/ a 180.0))
  5. )
  6. (defun rtd (a)
  7. (/ (* a 180.0 pi))
  8. )
  9. (defun C:bay (/ pt1 pt2 pt3 pt4)
  10. (setq OrigCmdEcho (getvar "CMDECHO")); gets CMDECHO value
  11. (setvar "CMDECHO" 0); sets to 0 - wont echo on command line
  12. (vl-load-com)
  13. (setq pt1 (getpoint "\Enter Point 1 : "))
  14. (setq pt2 (getpoint pt1 "\nEnter point 2 : "))
  15. (setq myline (command "_line" pt1 pt2 ""));draws 1st line
  16. (setq mylinename (entlast));obtain entity name of myline
  17. (setq pt3 (getpoint pt2 "\nEnter Point 3 : ")); get point on opposite side of rectangle
  18. (setq Span (distance pt1 pt2)); sets Span = length of myline
  19. (setq ang1 (angle pt1 pt2)); sets ang1 equal to line angle
  20. (setq mylinenamevla (vlax-ename->vla-object mylinename)); converts to vla object
  21. (setq pt4 (vlax-curve-getClosestPointTo mylinenamevla pt3 T)); gets perpendicular point
  22. (setq perpline (command "_line" pt3 pt4 "")); draws perpendicular line
  23. (setq perplinename (entlast));obtain entity name of perpline
  24. (setq bayl (distance pt3 pt4)); sets bay length to length of perpline
  25. (princ "\nSpan is : ")(princ Span)
  26. (princ "\nBay length is : ")(princ bayl)
  27. (command "_erase" mylinename "")
  28. (command "_erase" perplinename "")
  29. (setvar "CMDECHO" OrigCmdEcho); puts back to original value
  30. (princ)
  31. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 22:43:27 | 显示全部楼层
我运行了代码,不确定你要把我带到哪里,我只需要为每个基本形状做一个lisp,让L X W等指向它,然后你用Region&Massprop得到它的属性,这提供了你需要的东西,比如质心和面积。对于一个普通的直肠来说,代码有点冗长。甚至画在一个角度上。
 
很确定他们的一些倾斜面板的东西在这里的Cadtutor搜索它。
 
  1. ----------------   REGIONS   ----------------
  2. Area:                    11871.234
  3. Perimeter:               549.003
  4. Bounding box:         X: 291.749  --  467.573
  5.                      Y: 191.899  --  340.565
  6. Centroid:             X: 383.674
  7.                      Y: 257.132
  8. Moments of inertia:   X: 794650878.004
  9.                      Y: 1770166566.666
  10. Product of inertia:  XY: 1174021820.406
  11. Radii of gyration:    X: 258.726
  12.                      Y: 386.153
  13. Principal moments and X-Y directions about centroid:
  14.                      I: 9154728.825 along [0.978 0.208]
  15.                      J: 23258071.958 along [-0.208 0.978]
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 22:52:06 | 显示全部楼层
嗨,比格尔,非常感谢你的回复。
 
Region&Massprop并不是我真正想要的。
 
也许我可以重新定义一下我的问题。这是用VBA编写的大型项目的一小部分。
 
我想做的是点击屏幕上的三个点。这些点形成三角形(如果它们不在直线上)。点1和2之间的一条线构成三角形的“底”。我可以提取三角形“基线”的长度和角度。
 
然后我想找到从点3到三角形“底”的垂直距离(三角形的高度)。
 
我在LISP中使用vlax curve GetClosestPointTo实现了这一点,但我想知道VBA中是否有类似或等效的命令。
 
换句话说,如何使用VBA实现与LISP例程相同的结果。
 
希望这能澄清。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 23:05:27 | 显示全部楼层
在论坛上搜索Curve。cls和Vlax。cls将vlax函数用于VBA
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 23:09:30 | 显示全部楼层
非常感谢fixo。
 
我用Vlax下载了你的文件。dvb从另一个线程,我相信它给了我所有我需要破解这个螺母。
 
我还没有在VBA编程中遇到类模块,所以我希望它也能提供一个机会来提高我的编程能力。
 
同时,为了其他用户的利益,我基于三角形几何(Heron公式-来自维基百科)编写了几行代码,以获得三角形的高度。这是一个解决方案,但可能没有那么优雅。
 
再次感谢。
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 23:22:36 | 显示全部楼层
不幸的是,我无法访问带有VBA的系统。
 
我们只是在谈论2D吗;该Excel电子表格演示了一种相当温和的计算方法。3D兼容性会稍微复杂一些,但仍然不算太差。
间隔长度。拉链
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 23:35:21 | 显示全部楼层
谢谢你的回复。它用于二维点,而不是三维点。你的公式提供了另一个有趣的选择。
 
非常感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 23:25 , Processed in 0.479721 second(s), 66 queries .

© 2020-2025 乐筑天下

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