Jozi68 发表于 2022-7-6 14:20:56

多段线上的距离

大家好,
我在AutoCad 2009的2D中工作。我有一条由直线和圆弧组成的多段线。我需要一个Visual Basic例程,该例程从多段线的一端开始,查找与自身垂直的所有线,然后在包含多段线起点到交点距离的垂直线上插入文本。
我知道一些VB,但对Autocad不熟悉。任何帮助都将不胜感激。
当做
乔齐

SEANT 发表于 2022-7-6 14:25:42

你用的是哪种风格的VB?
 
如果它是基于VB6的(即Visual Studio 6,VBA)之一,则您可能会发现该任务相当烦人。Vanilla AutoCAD不会直接公开用于多段线分析的与VB兼容的API。您必须编写自己的多边形测量例程(尽管一些示例已在网上提供)或使用vlax曲线挂钩(有关更多信息,请参阅此线程:http://www.cadtutor.net/forum/showthread.php?t=19379)
 
如果您使用的是VB。NET选项更直接,因为托管API在这方面公开了更多功能。

Jozi68 发表于 2022-7-6 14:28:35

我正在使用VB6,这很糟糕吗?

SEANT 发表于 2022-7-6 14:33:37

事实上,确实如此。我建议不要编写任何新的基于VB6的代码。
 
微软早就停止了这种架构的开发(转而专注于.NET),而Autodesk虽然提供了一些VB6转换措施,但也建议在中编程(并将现有的基于VB6/VBA的代码移植到中)。净额。
 
虽然学习这种语言的新变体VB似乎很烦人。NET通过更广泛的API使许多任务变得更容易。

Lee Mac 发表于 2022-7-6 14:34:40

试一试:
 
(defun c:IntTxt(/cEnt cObj ss ObjLst iLst ptLst PLst lAng)(vl load com)(if(and(setq cEnt(car(entsel“\n选择曲线:))(member(cdr(assoc 0(entget cEnt)))(“LINE”“POLYLINE”“LWPOLYLINE”“SPLINE”“ARC”))(progn(setq cObj(vlax ename->vla object cEnt)ss(ssget“X”(list(cons 0”LINE,*POLYLINE))(if(getvar“CTAB”)(cons 410(getvar“CTAB”)(cons 67(-1(getvar“TILEMODE”Ή)Ή)Ή)ObjLst(vl remove if not)(函数(lambda(x)(>(vlax-safearray-get-u-bound)(vlax变量值(vla IntersectWith x cObj acExtendNone))1)0))(mapcar’vlax ename->vla object(vl remove if(function(lambda(x)(eq x cEnt)))(mapcar’cadr(ssnamex ss k)а);(foreach Obj ObjLst(setq iLst(vlax safearray->list(vlax变量值(vla IntersectWith Obj cObj acExtendNone))(while(not(zerop(length iLst))(setq ptLst(cons(list(car iLst)(cadr iLst)(caddr iLst))ptLst)iLst(cdddr iLst))(setq PLst(cons(cons Obj ptLst)PLst)ptLst nil iLst nil))(setq PLst(vl remove if not(function(lambda(x))(等于(/pi 2)(abs(-angle’(0 0)(vlax curve getFirstDeriv(car x)(vlax curve getParamatPoint(car x)(cadr x)))(angle’(0 0 0)(vlax curve getFirstDeriv cObj(vlax curve getParamatPoint cObj(cadr x k k)а)0.01))(PLst)(foreach Obj PLst(setq lAng(angle)(0.0)(vlax curve getFirstDeriv(car Obj)(vlax curve getParamatPoint(car Obj)(cadr Objа))(cond((and(>lAng(/pi 2))(lAng pi)(

Jozi68 发表于 2022-7-6 14:39:55

谢谢李的密码。你能一步一步地给我解释一下我应该用它做什么吗?我不知道该怎么办。这是Lisp程序吗?

Lee Mac 发表于 2022-7-6 14:40:35

这确实是Lisp程序。(使用Visual LISP的元素)。
 
运行说明:
 
[列表]
[*]复制我上面帖子中代码框架内的所有文本。
[/列表]
[列表]
[*]将此文本粘贴到新的记事本文档中
[/列表]
[列表]
[*]将此文件另存为文件名。lsp(文件名可以是任何你喜欢的)。
[/列表]
[列表]
[*]转到AutoCAD。
[/列表]
[列表]
[*]在命令行中键入“appload”。
[/列表]
[列表]
[*]找到您刚刚保存的位置。lsp文件。
[/列表]
[列表]
[*]单击“加载”加载文件,然后关闭“加载”对话框。
[/列表]
[列表]
[*]在命令行键入“inttxt”以调用函数。
希望这有帮助!
 

Lee Mac 发表于 2022-7-6 14:46:09

更多信息请点击此处:
 
 
http://www.cadtutor.net/faq/questions/28/How+do+I+use+an+AutoLISP+routine%3F

Lee Mac 发表于 2022-7-6 14:49:08

我的Lisp程序帮你了吗Jozi68?

Jozi68 发表于 2022-7-6 14:51:58

李,你好,
请原谅我那样消失了。我这边有点危机。我现在又回来工作了,面临着同样的问题。谢谢你寄给我的Lisp程序。不过我需要VB代码中的一些东西,因为我需要对其进行更改。Lisp程序对我来说是希腊语。
页: [1] 2
查看完整版本: 多段线上的距离