找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2382|回复: 6

[编程申请] 求助:框选编号

[复制链接]
发表于 2014-9-3 10:18:11 | 显示全部楼层 |阅读模式

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

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

×
由于选择了一个需要大量编号的专业,编号繁琐又没啥技术含量,原来在明经学过一阵子,也尝试的编过一些简单的小代码,但是对于这个自己想要的程序,真心不知道从哪里开始,工作也忙,现厚着脸皮来此求程序,望大侠们帮帮忙呀。
  希望的程序:款选一些编号(纯文本,非属性块),编号末尾数值按顺序编号。

程序效果是这样的

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

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-9-3 10:54:40 | 显示全部楼层
  1. (defun c:tt (/ ss lst i str nstr pos pre)
  2.   (if (setq ss (ssget '((0 . "text"))))
  3.     (progn
  4.       (setq lst        (mapcar        '(lambda (x)
  5.                            (list (xdrx_getpropertyvalue x "Position") ;_ dxf 10
  6.                                  x
  7.                            )
  8.                          )
  9.                         (xdrx_pickset->ents ss);_ss -> ents
  10.                 )
  11.             lst        (mapcar        'cadr
  12.                         (vl-sort lst
  13.                                  '(lambda (x1 x2)
  14.                                     (if        (equal (cadar x1) (cadar x2) 1e-6) ;_行 左上
  15.                                       (< (caar x1) (caar x2))
  16.                                       (> (cadar x1) (cadar x2))
  17.                                     )
  18.                                   )
  19.                         );_统一的可以直接写排序
  20.                 )
  21.             i        1
  22.       )
  23.       (foreach x lst
  24.         (setq str  (xdrx_getpropertyvalue x "Textstring") ;_dxf 1
  25.               pos  (vl-string-search "-" str)
  26.               pre  (substr str 1 (1+ pos))
  27.               nstr (strcat pre (itoa i))
  28.               i           (1+ i)
  29.         )
  30.         (xdrx_setpropertyvalue x "TextString" nstr);_entmod dxf 1
  31.       )
  32.     )
  33.   )
  34.   (princ)
  35. )

点评

大侠,请问下,,本程序是否需要加载一些函数库呢?在04版cad下运行出现:错误: no function definition: XDRX_PICKSET->ENTS,求教呀?  详情 回复 发表于 2014-9-3 11:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-9-3 11:02:29 | 显示全部楼层

大侠,请问下,,本程序是否需要加载一些函数库呢?在04版cad下运行出现:错误: no function definition: XDRX_PICKSET->ENTS,求教呀?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-9-3 11:11:55 | 显示全部楼层
bpf19880325 发表于 2014-9-3 11:02
大侠,请问下,,本程序是否需要加载一些函数库呢?在04版cad下运行出现:错误: no function definition: ...

需要加载 XDRXAPI  函数库,借用 API 定义的 Lisp 函数可以方便快速的写程序,建议下载
只用 A/Vlisp 就这样
  1. (defun c:tt (/ ss lst i str nstr pos pre sl e)
  2.   (if (setq ss (ssget '((0 . "text"))))
  3.     (progn
  4.       (setq sl (sslength ss))
  5.       (while (setq e (ssname ss (setq sl (1- sl))))
  6.         (setq lst (cons (entget e) lst))
  7.       )
  8.       (setq lst        (vl-sort
  9.                   lst
  10.                   '(lambda (x1 x2)
  11.                      (if (equal        (cadr (cdr (assoc 10 x1)))
  12.                                 (cadr (cdr (assoc 10 x2)))
  13.                                 1e-6
  14.                          ) ;_行 左上
  15.                        (< (car (cdr (assoc 10 x1)))
  16.                           (car (cdr (assoc 10 x2)))
  17.                        )
  18.                        (> (cadr (cdr (assoc 10 x1)))
  19.                           (cadr (cdr (assoc 10 x2)))
  20.                        )
  21.                      )
  22.                    )
  23.                 ) ;_统一的可以直接写排序
  24.             i        1
  25.       )
  26.       (foreach x lst
  27.         (setq str  (cdr (assoc 1 x)) ;_dxf 1
  28.               pos  (vl-string-search "-" str)
  29.               pre  (substr str 1 (1+ pos))
  30.               nstr (strcat pre (itoa i))
  31.               i           (1+ i)
  32.         )
  33.         (entmod (append x (list (cons 1 nstr)))) ;_entmod dxf 1
  34.       )
  35.     )
  36.   )
  37.   (princ)
  38. )

点评

太感谢你了,研究一下先。原来希望用lisp通过ssget过滤掉非文本后获取文本群码,然后通过if 及repeat函数循环处理的,但是一直没弄出来,谢谢大侠啊  详情 回复 发表于 2014-9-3 11:18
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-3 11:18:21 | 显示全部楼层
st788796 发表于 2014-9-3 11:11
需要加载 XDRXAPI  函数库,借用 API 定义的 Lisp 函数可以方便快速的写程序,建议下载
只用 A/Vlisp 就 ...

{:soso_e179:}太感谢你了,{:soso_e179:}研究一下先。原来希望用lisp通过ssget过滤掉非文本后获取文本群码,然后通过if 及repeat函数循环处理的,但是一直没弄出来,谢谢大侠啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 08:06 , Processed in 0.427106 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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