明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: jackAqwq

求助,给多段线节点编号并输出对应的坐标表

[复制链接]
发表于 2024-7-4 09:19:41 | 显示全部楼层
橡皮 发表于 2024-7-3 15:54
哈哈,你舅惯着他爸

舅舅好还是爸爸好
 楼主| 发表于 2024-7-6 13:50:20 | 显示全部楼层
弥勒 发表于 2024-7-4 08:17
;**************************20240229年 界点表*****************************************

(defun c:zz ...

谢谢,使用很顺畅
 楼主| 发表于 2024-7-6 13:51:43 | 显示全部楼层
ht1480 发表于 2024-7-4 09:06
点号放在线外对角线上,表格宽度随坐标值的宽度调整

也是非常不错
发表于 2024-7-17 16:58:06 | 显示全部楼层
弥勒 发表于 2024-7-4 08:17
;**************************20240229年 界点表*****************************************

(defun c:zz ...

请问下您,复制代码到lsp文件,然后ap导入插件提示“命令: ; 错误: 输入中的点位置不正确”请教下您是什么原因呀
发表于 2024-7-17 17:35:23 | 显示全部楼层
yanjingcy 发表于 2024-7-17 16:58
请问下您,复制代码到lsp文件,然后ap导入插件提示“命令: ; 错误: 输入中的点位置不正确”请教下您是什 ...

多段线互转 20240701 略调整BY:ZZXXQQ
(DEFUN C:T22 ()
(SETVAR "CMDECHO" 0)
(SETVAR "PLINETYPE" (IF (= (GETVAR "PLINETYPE") 0) 1 0))
   (IF (SETQ SS (SSGET '((0 . "*POLYLINE"))))
       (PROGN
           (SETQ I -1)
           (REPEAT (SSLENGTH SS)
                   (SETQ EN (SSNAME SS (SETQ I (1+ I))))
                   (COMMAND "EXPLODE" EN)
                   (COMMAND "PEDIT" "M" "P" "" "Y" "J" 0.5 "")
            )
        )
    )
(SETVAR "CMDECHO" 1)
(PRINC)
)
发表于 2024-7-17 17:51:35 | 显示全部楼层
弥勒 发表于 2024-7-17 17:35
多段线互转 20240701 略调整BY:ZZXXQQ
(DEFUN C:T22 ()
(SETVAR "CMDECHO" 0)

不是这个,是上面那个给多线段节点编号并输出坐标那个代码,20240229 界点表这个代码,会提示“ ; 错误: 输入中的点位置不正确”
发表于 2024-7-18 09:40:59 | 显示全部楼层
yanjingcy 发表于 2024-7-17 17:51
不是这个,是上面那个给多线段节点编号并输出坐标那个代码,20240229 界点表这个代码,会提示“ ; 错误:  ...

发个你提表格的图看看。
发表于 2024-8-3 23:59:35 | 显示全部楼层
本帖最后由 寒潮大冬瓜 于 2024-8-4 00:00 编辑

DFB二、三维顶点编号→自动字高+自动通过多段线顶点数量确定补齐位数00格式+自动图层名嵌套→波总指导升级版
只要闭着眼睛点击多段线就行了,不用理会参数输入……

(波多菠萝蜜951096036QQ群437857444群主)



(defun WB20240808(SJ12 SS93 / index1 sjg10 sjg18 ss98);自定义函数开始 SS93 SJ12
        (setq SJ12(itoa SJ12));编号序号转为字符串
        (setq SS98(itoa SS93));顶点个数转为字符串
        (setq SJG18(strlen SS98));以整数形式返回一个字符串中字符的个数
        (setq SJG10(strlen SJ12));以整数形式返回一个字符串中字符的个数
……

;Yw20240803获取块或直线多段线等图元外围对角坐标及其对角长度
(DEFUN Yw20240803(en / ll strxa strxab strxb strya stryab stryab-min stryb th2 ur)
        (vla-getboundingbox (vlax-ename->vla-object en) 'll 'ur)
        (setq ll (vlax-safearray->list ll)

……





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2024-8-4 16:00:13 | 显示全部楼层
本帖最后由 jackAqwq 于 2024-8-4 16:02 编辑

缝缝补补,勉强够用

  1. (vl-load-com)
  2. (defun c:ZBB(/ BGZG  ent  ss ss1 apt1 apt2 apt3 apt4 BGHG apt1Y apt1X aa i ii pt1 ptdh )
  3.   (K:SysVar);修改系统变量
  4.   (command "_undo" "be")
  5.   ;;;程序加载初始化设置
  6.   (if (=  nil)
  7.     (setq BGZG 2.0) ;文字高度
  8.   )
  9.   (if (= BGMC nil)
  10.     (setq BGMC "人防工程坐标表") ;表格名称
  11.   )
  12.   (if (= DHQZ nil)
  13.     (setq DHQZ "F") ;点号前缀
  14.   )
  15.   (if (= XY-YX nil)
  16.     (setq XY-YX "是") ;交换X Y坐标标记
  17.   )
  18.   (progn
  19.     (princ "\n当前参数值  文字高度:")
  20.     (princ BGZG)
  21.     (princ "  表格名称:")
  22.     (princ BGMC)
  23.     (princ "  点号前缀:")
  24.     (princ DHQZ)
  25.     (princ "  交换坐标:")
  26.     (princ XY-YX)
  27.   )
  28.   (setq ent (ssname (ssget) 0))
  29.   (setq ss (plgetlsta1  ent))
  30.   (setq ss1 ss)
  31.   ;;;指定需标注的点或设置字高、比例、精度、交换X Y坐标
  32.   (setq apt1 nil)
  33.   (while (= apt1 nil)
  34.     (initget "1 2 3 4")
  35.     (setq apt1 (getpoint
  36.                  "\n表格位置 或 [字高(1)/表格名称(2)/点号前缀(3)/交换坐标(4)]:"
  37.                )
  38.     )
  39.     (cond
  40.       ((= apt1 "1")
  41.         (setq apt1     nil
  42.           BGZG_old BGZG
  43.         )
  44.         (setq BGZG (getreal (strcat "\n指定字高<" (rtos BGZG 2) ">:")))
  45.         (if (= BGZG nil) (setq BGZG BGZG_old))
  46.         (princ (strcat "当前字高:" (rtos BGZG 2)))
  47.       )
  48.       ((= apt1 "2")
  49.         (setq apt1     nil
  50.           BGMC_old BGMC
  51.         )
  52.         (setq BGMC (getstring (strcat "\n表格名称<"BGMC">:")))
  53.         (if (= BGMC nil) (setq BGMC BGMC_old))
  54.         (princ (strcat "当前表名:" BGMC))
  55.       )
  56.       ((= apt1 "3")
  57.         (setq apt1      nil
  58.           DHQZ_old DHQZ
  59.         )
  60.         (setq DHQZ (getstring  (strcat "\n指定前缀<" DHQZ ">:")))
  61.         (if (= DHQZ nil) (setq DHQZ DHQZ_old))
  62.         (princ (strcat "当前前缀:" DHQZ))
  63.       )
  64.       ((= apt1 "4")
  65.         (setq apt1 nil)
  66.         (initget 1 "1 2")
  67.         (setq XY-YX (getkword (strcat "\n是否交换坐标[是(1)/否(2)]<" XY-YX ">:")))
  68.         (princ
  69.           (strcat
  70.             "当前交换坐标:"
  71.             (cond
  72.               ((= XY-YX "1") "是")
  73.               ((= XY-YX "2") "否")
  74.             )
  75.           )
  76.         )
  77.       )
  78.       (T)
  79.     )
  80.   )
  81.   (NewLayer:Name-YanSe BGMC 1)
  82.   (setq BGHG (* 3 BGZG));BGHG:表格行高
  83.   (setq apt2 (polar apt1 0 (* BGZG 20 )));第一行宽:字高*20
  84.   (setq apt3 (polar apt2 (* pi 1.5) BGHG))
  85.   (setq apt4 (polar apt1 (* pi 1.5) BGHG))
  86.   ;(command "_LAYER" "M" BGMC "C" "1" BGMC "");生成图层并设置颜色
  87.   ;(NewLine:pt1-pt2 apt1 apt4);表头框左边那一行直线
  88.   ;(NewLine:pt1-pt2 apt1 apt2);表头框上面那一行直线
  89.   ;(NewLine:pt1-pt2 apt2 apt3);表头框右边那一行直线
  90.   ;表头框,上面注释掉就不显示表头框
  91.   (NewLine:pt1-pt2 apt3 apt4);表头框下面那一行直线
  92.   (setq apt1Y (polar apt1 (* pi 1.5) (/ BGHG 2)));
  93.   (setq apt1X (polar apt1Y 0 (/ (* BGZG 20)2)));0   16
  94.   (NewText-:JiDian-NeiRong-ZiGao apt1X "人防工程坐标表" (* 1.2 BGZG) )
  95.   (setq i 1)
  96.   ( gxba BGZG i  apt4   0 )
  97.   (repeat (length ss)
  98.     ( setq apt4 (polar apt4 (* pi 1.5) BGHG))
  99.     ( setq ii  (strcat DHQZ (itoa i) ));点号名称
  100.     ( setq pt1 (car ss1));点号列表
  101.     ( setq ptdh (polar pt1 (* pi 0.5) (* 1.25 BGZG )));点号位置
  102.     ( command "text" "MC" ptdh (* 1.0 BGZG )0 ii )
  103.     ( command ".CIRCLE" pt1 (* 0.12 BGZG) );圈大小
  104.     ( setq ss1  (cdr ss1))
  105.     ( gxba BGZG ii  apt4  pt1 )
  106.     ( setq i (1+ i))
  107.   )
  108.   (command "_undo" "e")
  109.   (K:SysVar);恢复系统变量
  110.   (princ)
  111. )
  112. ;以下是相应函数
  113. (defun gxba ( BGZG i  pt  ptzb / w h  pta pta1 pta2  pta3)
  114.   (setq w (* BGZG 4));列宽
  115.   (setq h (* BGZG 3));行高
  116.   (NewLine:pt1-pt2 pt (polar pt (* pi 1.5) h));第1列
  117.   (NewLine:pt1-pt2 (polar pt (* pi 1.5) h) (polar (polar pt 0 (* w 5)) (* pi 1.5) h));第2行
  118.   (NewLine:pt1-pt2 (polar (polar pt 0 (* w 5)) (* pi 1.5) h) (polar pt 0 (* w 5)));第4列
  119.   (NewLine:pt1-pt2 (polar pt 0 w) (polar (polar pt 0 w) (* pi 1.5) h));第2列
  120.   (NewLine:pt1-pt2 (polar pt 0 (* w 3)) (polar (polar pt 0 (* w 3)) (* pi 1.5) h));第3列
  121.   (setq pta (polar pt (* pi 1.5) (* h 0.5)));行高中点
  122.   (setq pta1 (polar pta 0 (* w 0.5)));点号列宽中点
  123.   (setq pta2 (polar pta 0 (* W 2)));X列宽中点
  124.   (setq pta3 (polar pta 0 (* W 4)));Y列宽中点
  125.   ( if (= ptzb 0)
  126.     (progn
  127.       (NewText-:JiDian-NeiRong-ZiGao pta1 "点号" (* 1.2 BGZG))
  128.       (NewText-:JiDian-NeiRong-ZiGao pta2 "X" (* 1.2 BGZG))
  129.       (NewText-:JiDian-NeiRong-ZiGao pta3 "Y" (* 1.2 BGZG))
  130.     )
  131.     (progn
  132.       (if (= XY-YX "2")
  133.         (setq X (rtos (cadr ptzb) 2 2)
  134.           Y (rtos (car ptzb) 2 2)
  135.         )
  136.         (setq Y (rtos (cadr ptzb) 2 2)
  137.           X (rtos (car ptzb) 2 2)
  138.         )
  139.       )
  140.       (NewText-:JiDian-NeiRong-ZiGao pta1 i BGZG)
  141.       (NewText-:JiDian-NeiRong-ZiGao pta2 Y BGZG)
  142.       (NewText-:JiDian-NeiRong-ZiGao pta3 X BGZG)
  143.     )
  144.   )
  145. )
  146. (defun plgetlsta1 (ent)
  147.   (mapcar 'cdr (vl-remove-if-not (FUNCTION (LAMBDA (x) (= 10 (car x)))) (entget ent)))
  148. )
  149. ;修改或恢复系统变量函数
  150. (defun K:SysVar ()
  151.   (if (not *Old_vars*)
  152.     (progn
  153.       (setq *New_vars* '((cmdecho 0);取消回显
  154.                           (OSMode 0);禁用捕捉
  155.                           (expert 5);禁止提示冲突(默认Yes)
  156.                           (DimZin 1);不消0
  157.                           (TextStyle "宋体");设置字体样式
  158.                         ))
  159.       (setq *Old_vars* (mapcar'(lambda (a / b)(if (and(setq b (getvar (car a)))(/= b (cadr a)))
  160.                                                 (progn
  161.                                                   (apply 'setvar a)
  162.                                                   (list (car a) b))))
  163.                          *New_vars*
  164.                        )
  165.       )
  166.       (setq *New_vars* nil)
  167.     )
  168.     (progn
  169.       (foreach xx *Old_vars* (if xx (apply 'setvar xx)))
  170.       (setq *Old_vars* nil)
  171.     )
  172.   )
  173. )
  174. ;; 创建直线图元
  175. (defun NewLine:pt1-pt2 (pt1 pt2)
  176.   (entmake (list '(0 . "LINE")
  177.              (cons 10 pt1)
  178.              (cons 11 pt2)
  179.            )
  180.   )
  181. )
  182. ;; 创建文字图元
  183. (defun NewText-:JiDian-NeiRong-ZiGao (JiDian NeiRong ZiGao )
  184.   (entmake
  185.     (list
  186.       '(0 . "TEXT")
  187.       (cons 10 JiDian)  ; 插入点
  188.       (cons 40 ZiGao)  ; 文字高度
  189.       (cons 1 NeiRong)  ; 文字内容
  190.       '(7 . "宋体");字形名称
  191.       '(72 . 1);水平对齐方式
  192.       '(73 . 2) ;垂直对齐方式
  193.       (cons 11 JiDian)  ; 对齐插入点
  194.     )
  195.   ))
  196. ;;创建图层函数
  197. ;;图名-线型-颜色-打印-线宽
  198. (defun NewLayer:Name-YanSe (Name YanSe )
  199.   (if (not (tblsearch "LAYER" Name))  ;;;判断有没有该图层
  200.     (entmake
  201.       (list
  202.         '(0 . "LAYER")
  203.         '(100 . "AcDbSymbolTableRecord")
  204.         '(100 . "AcDbLayerTableRecord")
  205.         '(70 . 0);层可见性
  206.         (cons 2 Name);图层名称
  207.         (cons 62 yanse) ;图层颜色
  208.       )
  209.     )
  210.   )
  211.   (setvar "CLAYER" Name)
  212. )
  213. (princ)


发表于 2024-8-4 23:49:53 | 显示全部楼层
jackAqwq 发表于 2024-8-4 16:00
缝缝补补,勉强够用

有重叠线,多余线,文字没居中,其他还不错哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 21:08 , Processed in 0.155666 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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