bsamc2000 发表于 2022-7-6 14:52:14

为边界a选择点

好吧,我被难住了。
我希望能够选择一个点,并返回选定区域的边界。类似于边界图案填充。我一直在寻找一种在VB中实现这一点的方法。但是我找不到一个例子。VBA也可以。
如有任何信息,我们将不胜感激。
 
非常感谢。
布瑞恩

Lee Mac 发表于 2022-7-6 15:03:55

六羟甲基三聚氰胺六甲醚。。。我从来没有想过这一点,但这似乎是相当困难的-除非有一种方法我错过了。。。
 
 
我在LISP中处理它的方法是在选定点处构造一条任意长度或角度的线,并找到该线与图形中所有对象的所有交点(不是一个缓慢的任务),然后找到与该点最近的交点,并找到位于该交点上的对象。
 
但我希望有一个更简单的方法!

Magnum Z 发表于 2022-7-6 15:10:12

你不能用hatch函数的代码来解决这个问题吗?只是大声思考。

Magnum Z 发表于 2022-7-6 15:13:23

甚至不知道有一个特定于边界的命令。从未使用过。

uddfl 发表于 2022-7-6 15:19:10

我知道的唯一方法是借用ARX函数BPOLY:
 
(vl-arx-import 'BPOLY)
(setq MyBoundary (bpoly (getpoint "\nSpecify internal point:")))

lpseifert 发表于 2022-7-6 15:26:48

非VBA且不防弹

; return area of picked boundaryLPS 02-2009
(defun c:da (/ elname ip sqft sqyd acre)
(setvar "cmdecho" 0)
(setq elname (entlast)
   ip (getpoint "Pick internal point: ")
   )
(command "boundary" ip "")

   (if (eq (entlast) elname)
   (alert "No boundary created!")
   (progn
   (setq ar (command "area" "o" "l"))

   (setq sqft (getvar "area")
   sqyd (/ sqft 9.0)
   acre (/ sqft 43560.0)
   )
(alert
   (strcat "\n      Square Feet = " (rtos sqft 2 2)
             "\n      Square Yards = " (rtos sqyd 2 2)
             "\n      Acres = " (rtos acre 2 3)
             "\n"
   )
)
   (entdel (entlast))
)
   )
   (setvar "cmdecho" 1)
   (princ)
)

wizman 发表于 2022-7-6 15:30:27

http://mathworld.wolfram.com/ConvexHull.html

wizman 发表于 2022-7-6 15:38:46

或者这个,因为你关心的是点,点组总是会形成一个边界
 
http://mathworld.wolfram.com/TravelingSalesmanProblem.html

Lee Mac 发表于 2022-7-6 15:42:32

很好的一个Wizman,就在我的街上,如果你知道我的意思。。。
 
但我认为OP想要在一个对象内选择一个点,让LISP或VBA识别你在其中点击的对象。

wizman 发表于 2022-7-6 15:52:13

李,你说得对,大多数时候我的想法都偏离了主题,这就是其中之一,去睡觉吧……”
-\m/izan
页: [1] 2
查看完整版本: 为边界a选择点