乐筑天下

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

[编程交流] 多段线到引线

[复制链接]

16

主题

36

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-6 10:54:46 | 显示全部楼层 |阅读模式
我在一个层中有很多文本和多段线。如何仅将多段线转换为引线?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:08:47 | 显示全部楼层
提取每个PLine顶点的XYZ,并相应地绘制引线。
回复

使用道具 举报

16

主题

36

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-6 11:25:31 | 显示全部楼层
以及如何为引线附加文本?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:37:20 | 显示全部楼层
用户必须选择要使用的文本。
 
查看vla addLeader函数。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:48:19 | 显示全部楼层
可能是这样的:
 
  1. (defun c:toLeader (/ lst2pt ENT PTS TXT TYP)
  2. (vl-load-com) ;; Lee Mac  ~  24.02.10
  3. (defun lst2pt (lst flag)
  4.    (if lst
  5.      (cons (list (car lst) (cadr lst) (if flag (caddr lst) 0.0))
  6.            (lst2pt (if flag (cdddr lst) (cddr lst)) flag))))
  7. (setq *doc (cond (*doc) ((vla-get-ActiveDocument
  8.                             (vlax-get-acad-object)))))
  9. (while
  10.    (progn
  11.      (setq ent (car (entsel "\nSelect Polyline for Leader: ")))
  12.      (cond (  (eq 'ENAME (type ent))
  13.               (if (wcmatch (setq typ (cdr (assoc 0 (entget ent)))) "*POLYLINE")
  14.                 (progn
  15.                   (setq pts
  16.                     (lst2pt
  17.                       (vlax-get
  18.                         (vlax-ename->vla-object ent) 'Coordinates)
  19.                       (if (eq "POLYLINE" typ) t nil)))
  20.                   (while
  21.                     (progn
  22.                       (setq txt (car (entsel "\nSelect Text for Leader: ")))
  23.                       (cond (  (eq 'ENAME (type txt))
  24.                                (if (eq "MTEXT" (cdr (assoc 0 (entget txt))))
  25.                                  (progn
  26.                                    
  27.                                    (vla-AddLeader
  28.                                     
  29.                                      (if (zerop (vla-get-ActiveSpace *doc))
  30.                                        (if (eq :vlax-true (vla-get-mspace *doc))
  31.                                          (vla-get-ModelSpace *doc)
  32.                                          (vla-get-PaperSpace *doc))                                       
  33.                                        (vla-get-ModelSpace *doc))
  34.                                     
  35.                                      (variant
  36.                                        (vlax-safearray-fill
  37.                                          (safearray vlax-vbDouble
  38.                                            (cons 0 (1- (* 3 (length pts)))))
  39.                                          (apply (function append) pts)))
  40.                                     
  41.                                        (vlax-ename->vla-object txt)
  42.                                     
  43.                                      acLineWithArrow)
  44.                                    (entdel ent))
  45.                                  (princ "\n** Object Must be MText **")))))))
  46.                
  47.                 (princ "\n** Object Must be a *Polyline **"))))))
  48. (princ))
  49.                                    
回复

使用道具 举报

1

主题

12

帖子

11

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:06:23 | 显示全部楼层
李Lisp程序。你能不能修改一下,使它不需要文本?只想将多段线更改为引线。可以让lisp将新引线保留在其原始层而不是层“0”上吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 12:21 , Processed in 0.361638 second(s), 64 queries .

© 2020-2025 乐筑天下

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