明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1553|回复: 2

多段线批量注记坐标

[复制链接]
发表于 2015-9-1 09:01 | 显示全部楼层 |阅读模式
多段线批量注记坐标,73哥函数
  1. (defun C:ddxzb(/ cd cd1 cd2 x y zh zj x y zj1 k ss ent11)
  2.    (command "LAYER" "M" "htext" "")
  3.    (princ "\n比例尺:<")
  4.    (princ scale)
  5.    (princ ">")
  6.    (setq scale1 (getreal))
  7.    (if (not (null scale1)) (setq scale scale1))
  8.    (setq zh (/ (* 2.5 scale) 1000)
  9.          zj (* zh 4)
  10.          zj (list zj zj)
  11.    )

  12. ;标注坐标函数
  13. (defun rrdd (cd zh zj / x y sset1 sset2 sset3)
  14.       (setvar "luprec" 3)
  15.       (command "OSNAP" "")
  16.       (setq x (strcat "Y=" (rtos (car cd)))
  17.             y (strcat "X=" (rtos (cadr cd)))
  18.             ;cd (mapcar '+ cd zj)
  19.       )
  20.    (setq zj1 (* zh 0.3))
  21.   (command "LINE" cd
  22.                (mapcar '- cd (list 0 zj1))
  23.                ""
  24.       )
  25.       (command "TEXT" cd zh 0 y)
  26.       (setq sset1 (ssget "l"))
  27.       (setq zj1 (* zh 1.5)
  28.             cd (mapcar '- cd (list 0 zj1))
  29.       )
  30.       (command "TEXT" cd "" 0 x)
  31.       (setq sset2 (ssget "l"))
  32.       (setq zj1 (* zh 1.2)
  33.             cd (mapcar '+ cd (list 0 zj1))
  34.       )
  35.       (command "LINE" cd
  36.                (polar cd 0 (/ (* 25 scale) 1000))
  37.                ""
  38.       )
  39.       (setq sset3 (ssget "l"))
  40.       (command "select" sset1 sset2 sset3 "")
  41.       (setq sset (ssget "p"))
  42. )

  43. (defun Plinexy(e / p a b n ob q et d d1 en et) ;;多线段节点坐标(滤掉了多余点,未处理假闭合)
  44.    (setq a(entget e)ob(vlax-ename->vla-object e)et(cdr(assoc 0 a))n 0 p nil d nil)
  45.    (cond((="LWPOLYLINE"et)
  46.          (repeat(length a)(setq b (nth n a) n (+ n 1))
  47.            (if (= 10 (car b))(progn
  48.                                (setq q(list (cadr b) (caddr b))d1(vlax-curve-getDistAtPoint ob q))
  49.                                (if p (if (not(member d1 d)) (setq p (append p (list q))d (append d (list d1))))
  50.                                  (setq p (list q))))
  51.              )))
  52.         ((="POLYLINE"et)
  53.          (SETQ EN (ENTGET (SETQ E (ENTNEXT E))))
  54.          (WHILE (/= (CDR (ASSOC 0 EN)) "SEQEND")
  55.            (SETQ q (CDR (ASSOC 10 EN))d1(vlax-curve-getDistAtPoint ob q)q(reverse(cdr(reverse q))))
  56.            (if p(if (not(member d1 d)) (setq p (append p (list q))d (append d (list d1))))
  57.              (setq p (list q)))
  58.            (SETQ EN (ENTGET (SETQ E (ENTNEXT E)))))
  59.          (setq p(reverse p))
  60.          ))
  61.    P)
  62. ;;;;
  63. (setq ss (ssget '((0 . "lwpolyline,polyline"))) )
  64.   (repeat (setq k (sslength ss))
  65.     (setq ent11 (ssname ss (setq k (1- k))))

  66. ;(setq ent11(car (entsel"\n请选择多段线:")))

  67. (foreach cd (plinexy ent11)
  68.     (rrdd cd zh zj)


  69.   )
  70. )










  71.   )
发表于 2015-9-1 11:13 | 显示全部楼层
XY 叠在一起?
发表于 2017-11-17 17:28 | 显示全部楼层
; 错误: no function definition: VLAX-ENAME->VLA-OBJECT
这是什么原因呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 07:14 , Processed in 0.242296 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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