马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
先发布PKPM梁、柱自动排序LISP程序。这是修改后的LISP程序。

- [FONT=courier new]
- ;;月枫PKPM工具集程序;
- ;;自动排序函数.
- (Defun C:ZDPX(/ PLZZB S1 DA TE SZ TT SA L1 N1 DATA WZNR JYMC JYMN OLDXH PLZJB PLZZC L2 BASE ZJZ NAM SEN NAM1 NEW1)
- ;加载晓东API.
- (ArxLoad "XDRX_API15.ARX")
- (SetQ PLZZB Nil)
- ;选择要排序的对象.
- (SetQ S1 (XDRX_EntSel "\n请选择要排列的对象" '((0 . "TEXT")));所选中的对象必须为文字.
- DA (EntGet (Car S1));对象的DXF组码.
- TE (Cdr (Assoc 1 DA));对象文字的内容.
- SZ (XDRX_String_FindOneOf TE "0123456789");查出该对象文字内容中是否含有数字.
- )
- ;判断对象文字内容中是否含有数字.
- (If (Not SZ)
- (Progn
- (Alert "所选中文字没有任何数字,不能进行排序操作!")
- (Exit)
- )
- )
- (SetQ TT (XDRX_String_Left TE SZ));取出该对象文字内容中不含有数字的前部分.
- (Prompt "请选择要进行排序的对象[ALL=全选]")
- (SetQ SA (SsGet '((0 . "TEXT")));选择所有要进行排序操作的文字对象.
- L1 (SsLength SA)
- N1 0
- )
- ;将所有与选中对象相同前缀的文字进行筛选.
- (Repeat L1
- (SetQ Data (EntGet (SsName SA N1));选择集中对象的DXF组码.
- WZNR (Cdr (Assoc 1 Data));该对象文字内容.
- JYMC (XDRX_String_FindOneOf WZNR "0123456789")
- JYMN (XDRX_String_Left WZNR JYMC)
- )
- (If (= JYMN TT)
- (Progn
- (SetQ OLDXH (AToI (XDRX_String_Remove WZNR 0 JYMC))
- PLZJB (List OLDXH N1)
- )
- (If (= Nil PLZZB)
- (SetQ PLZZB (List PLZJB))
- (SetQ PLZZB (Cons PLZJB PLZZB))
- )
- )
- )
- (SetQ N1 (1+ N1))
- )
- ;将筛选后的对象按序号从小到大排列.
- (SetQ PXZZC (Car (Apply 'XDRX_RListSort2 PLZZB))
- L2 (Length PXZZC)
- N1 0
- Base (GetInt "\n请输入排序的开始号:")
- )
- (If (<= Base 0)
- (Progn
- (Alert "输入排序的开始号小于0!")
- (Exit)
- )
- )
- (Repeat L2
- (SetQ ZJZ (Nth N1 PXZZC)
- Nam (Fix (Car ZJZ))
- SEN (Fix (Cadr ZJZ))
- Data (EntGet (SsName SA SEN))
- )
- (If (/= N1 0)
- (Progn
- (SetQ Nam1 (Fix (Car (Nth (1- N1) PXZZC))))
- (If (/= Nam Nam1)(SetQ Base (1+ Base)))
- )
- )
- (SetQ NEW1 (StrCat TT (IToA Base))
- Data (Subst (Cons 1 NEW1) (Assoc 1 Data) Data)
- )
- (EntMod Data)
- (SetQ N1 (1+ N1))
- )
- (Prompt (StrCat "本次操作后最大号为:" NEW1 "!"))
- )
- [/FONT]
|