明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 746|回复: 4

提取多线段所在的图层名并按顶点顺序提取顶点处文字到文本

[复制链接]
发表于 2019-5-19 14:44 | 显示全部楼层 |阅读模式
8明经币
提取多线段所在的图层名,并按多线段顶点顺序提取顶点处文字到文本



有劳论坛大神百忙中抽空弄个lsp用用!谢谢!谢谢!
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

;请试用以下程序 (defun c:tqddxwz() (setq path (getvar "dwgprefix")) (if (setq ssddx (ssget '((0 . "LWPOLYLINE")))) (if (setq wjm (getfiled "请指定存盘文件" path "txt" 1)) (progn (setq wjsjb nil) (if (setq sswz (ssget "x" '((0 . "text")))) (setq wjsjb (mapcar '(lambda(ent) (setq dxf (entget e ...
发表于 2019-5-19 14:44 | 显示全部楼层
;请试用以下程序
(defun c:tqddxwz()
     (setq path (getvar "dwgprefix"))
     (if (setq ssddx (ssget '((0 . "LWPOLYLINE"))))
         (if (setq wjm (getfiled "请指定存盘文件" path "txt" 1))
             (progn
                 (setq wjsjb nil)
                 (if (setq sswz (ssget "x" '((0 . "text"))))
                     (setq wjsjb (mapcar '(lambda(ent)
                                               (setq dxf (entget ent))
                                               (setq pt  (cdr (assoc 11 dxf)))
                                               (if (equal pt '(0 0 0)) (setq pt (cdr (assoc 10 dxf))))
                                               (list (cdr (assoc 1 dxf)) pt (cdr (assoc 40 dxf)))
                                          )
                                          (vl-remove-if 'listp (mapcar 'cadr (ssnamex sswz)))
                                  )
                    )
                 )
                 (setq ddxent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ssddx))))                              
                 (setq fff (open wjm "w"))
                 (foreach ent ddxent
                     (setq dxf (entget ent)
                           tcm (cdr (assoc 8 dxf))
                     )
                     (setq pts (mapcar 'cdr (vl-remove-if '(lambda(x)(/= (car x) 10)) dxf)))
                     (foreach pt pts
                          (setq ptb nil)
                          (if wjsjb
                              (setq ptb (vl-remove-if '(lambda(zb)
                                                           (> (distance pt (cadr zb)) (* 1.25 (last zb)))
                                                       )
                                                       wjsjb
                                        )
                              )
                          )
                          (If ptb
                              (progn
                                  (setq ptb (vl-sort ptb '(lambda(a b)(< (distance pt (cadr a)) (distance pt (cadr b))))))
                                  (princ (strcat tcm  " , " (caar ptb) "\n") fff)
                                  (setq wjsjb (vl-remove (car ptb) wjsjb))
                              )
                          )
                     )
                 )
                 (close fff)
             )
         )
     )
     (princ)
)
回复

使用道具 举报

 楼主| 发表于 2019-5-21 09:36 | 显示全部楼层
yshf 发表于 2019-5-21 08:23
;请试用以下程序
(defun c:tqddxwz()
     (setq path (getvar "dwgprefix"))

谢谢大神!
现在省事多了,再次表示由衷的感谢、谢谢!!
回复

使用道具 举报

发表于 2019-5-26 08:37 | 显示全部楼层
yshf 发表于 2019-5-19 14:44
;请试用以下程序
(defun c:tqddxwz()
     (setq path (getvar "dwgprefix"))

控制文字距离的语句是哪行啊?输出完后可否亮显?
回复

使用道具 举报

发表于 2020-8-17 15:37 来自手机 | 显示全部楼层
顶顶顶顶顶
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-19 08:26 , Processed in 0.443437 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表