找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2680|回复: 5

[研讨] 批量宗地编号程序

[复制链接]
发表于 2014-5-31 19:36:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
;这个程序是批量宗地编号程序,是从下至上,从右到左的,我想改成自上至下,从左到右。那位大神请帮改一下啊谢谢
(defun c:zdbh()
  (setq ss (ssget (list '(0 . "LWPOLYLINE"))))
  (setq n 0 k 1)
  (repeat (sslength ss)
    (setq na (ssname ss n))
    (setq po (Get_center_relative na))
    (command "text" "j" "mc" po 2.5 0 k "")
    (setq k (1+ k))
    (setq n (1+ n))
    )
  )
(defun Get_center_relative (ename /  Pts   2R Mk   Mkline  points   DelLine   Tssred
     i   lst  N  Newlst    DistList     R   Number  Tssbak TssSub  Pt)
    (setq Obj     (Vlax-Ename->Vla-Object ename)
   Tssbak  (Vlax-Get Obj 'Thickness )
   TssSub  (Vlax-Put Obj 'Thickness 0 ))
    (setq Pts     (GetBoundingBox ename)
   2R      (MJ:MIDPOINT (CAR Pts) (CADR Pts))
   Mk      (entmake (list (cons 0 "LINE")(cons 8 "JMDSS")(cons 10 (polar 2R 0.0 1000))(cons 11 (polar 2R 3.14159 1000))))
   Mkline  (entlast)
   points  (vlax-invoke (vlax-ename->vla-object ename) 'IntersectWith (vlax-ename->vla-object Mkline) acExtendOtherEntity)
   Tssred  (Vlax-Put Obj 'Thickness (eval Tssbak) )
   DelLine (entdel Mkline)
   i       0
   lst     nil
   )
  (repeat (/ (length points) 3)
       (setq lst (append lst (list (list (nth i points) (nth (1+ i) points) (nth (+ 2 i) points)))))
       (setq i (+ i 3))
  )
  (setq lst (px lst))
  (if (>= (length lst) 4)
      (progn
   (setq N      0
  Newlst nil)
   (repeat (/ (length lst) 2)
       (setq Newlst (append Newlst (list (list (nth N lst) (nth (1+ N) lst)))))
       (setq N (+ 2 N))
   )
   (setq DistList nil
         R        0)
   (repeat (length Newlst)
     (setq Number (nth R Newlst)
           DistList (append DistList  (list(distance (car Number) (cadr Number)))))
     (setq R (1+ R))
   )
   (setq  Pt (nth (vl-position (car (vl-sort DistList '>)) DistList) Newlst))
(MJ:MIDPOINT (car pt) (cadr pt));返回值
      )
      (MJ:MIDPOINT (car lst) (cadr lst));返回值
  )
)
(defun MJ:MIDPOINT (P1 P2)
  (mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) P1 P2)
)
(defun GetBoundingBox (ent / ll ur)
    (vla-getboundingbox (vlax-ename->vla-object ent) 'll 'ur)
    (mapcar 'vlax-safearray->list (list ll ur))
)
(defun px (X)
    (vl-sort  X
             (function (lambda (e1 e2)
                         (< (car e1) (car e2)) ) ) )
)

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-5-31 20:08:22 来自手机 | 显示全部楼层
用xd::list:tablesort可以自己指定排序方式
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-6-1 11:03:06 | 显示全部楼层
  1. (defun c:tt (/ ss lst i)
  2.   (if (setq ss (ssget '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))))
  3.     (progn
  4.       (setq lst        (mapcar        '(lambda (x / box)
  5.                            (setq box (xdrx_entity_box x))
  6.                            (list
  7.                              (xdrx_line_midp (car box) (caddr box))
  8.                              x
  9.                            )
  10.                          )
  11.                         (xdrx_pickset->ents ss)
  12.                 )
  13.             lst        (xd::list:tablesort lst 1 3 1e-3) ;_ 1 列 3 左上角
  14.             lst        (mapcar '(lambda (x) (mapcar 'car x)) lst)
  15.             i        0
  16.       )
  17.       (foreach x lst
  18.         (foreach a x
  19.           (xdrx_text_make a (itoa (setq i (1+ i))) 25. 0.)
  20.         )
  21.       )
  22.     )
  23.   )
  24.   (princ)
  25. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-1 13:40:11 | 显示全部楼层
no function definition: XDRX_PICKSET->ENTS
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-1 13:41:03 | 显示全部楼层
运行后出现这个no function definition: XDRX_PICKSET->ENTS
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2017-5-23 10:34:29 | 显示全部楼层
学习学习,厉害了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-22 03:49 , Processed in 0.383883 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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