乐筑天下

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

[编程交流] 多段线上的距离

[复制链接]

35

主题

97

帖子

62

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 14:20:56 | 显示全部楼层 |阅读模式
大家好,
我在AutoCad 2009的2D中工作。我有一条由直线和圆弧组成的多段线。我需要一个Visual Basic例程,该例程从多段线的一端开始,查找与自身垂直的所有线,然后在包含多段线起点到交点距离的垂直线上插入文本。
我知道一些VB,但对Autocad不熟悉。任何帮助都将不胜感激。
当做
乔齐
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 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在这方面公开了更多功能。
回复

使用道具 举报

35

主题

97

帖子

62

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 14:28:35 | 显示全部楼层
我正在使用VB6,这很糟糕吗?
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:34:40 | 显示全部楼层
试一试:
 
[code](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)(
回复

使用道具 举报

35

主题

97

帖子

62

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 14:39:55 | 显示全部楼层
谢谢李的密码。你能一步一步地给我解释一下我应该用它做什么吗?我不知道该怎么办。这是Lisp程序吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

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

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 14:46:09 | 显示全部楼层
    更多信息请点击此处:
     
     
    http://www.cadtutor.net/faq/questions/28/How+do+I+use+an+AutoLISP+routine%3F
    回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 14:49:08 | 显示全部楼层
    我的Lisp程序帮你了吗Jozi68?
    回复

    使用道具 举报

    35

    主题

    97

    帖子

    62

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    175
    发表于 2022-7-6 14:51:58 | 显示全部楼层
    李,你好,
    请原谅我那样消失了。我这边有点危机。我现在又回来工作了,面临着同样的问题。谢谢你寄给我的Lisp程序。不过我需要VB代码中的一些东西,因为我需要对其进行更改。Lisp程序对我来说是希腊语。
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-5 02:58 , Processed in 0.597554 second(s), 72 queries .

    © 2020-2025 乐筑天下

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