找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1036|回复: 1

[LISP程序]:自制PKPM用的一些LISP程序。

[复制链接]

已领礼包: 444个

财富等级: 日进斗金

发表于 2002-5-1 21:12:48 | 显示全部楼层 |阅读模式

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

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

×
先发布PKPM梁、柱自动排序LISP程序。这是修改后的LISP程序。

  1.   [FONT=courier new]
  2. ;;月枫PKPM工具集程序;
  3. ;;自动排序函数.

  4. (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)
  5.    ;加载晓东API.
  6.    (ArxLoad "XDRX_API15.ARX")
  7.    (SetQ PLZZB Nil)
  8.    ;选择要排序的对象.
  9.    (SetQ S1 (XDRX_EntSel "\n请选择要排列的对象" '((0 . "TEXT")));所选中的对象必须为文字.
  10.          DA (EntGet (Car S1));对象的DXF组码.
  11.          TE (Cdr (Assoc 1 DA));对象文字的内容.
  12.          SZ (XDRX_String_FindOneOf TE "0123456789");查出该对象文字内容中是否含有数字.
  13.    )
  14.    ;判断对象文字内容中是否含有数字.
  15.    (If (Not SZ)
  16.       (Progn
  17.          (Alert "所选中文字没有任何数字,不能进行排序操作!")
  18.          (Exit)
  19.       )
  20.    )
  21.    (SetQ TT (XDRX_String_Left TE SZ));取出该对象文字内容中不含有数字的前部分.
  22.    (Prompt "请选择要进行排序的对象[ALL=全选]")
  23.    (SetQ SA (SsGet '((0 . "TEXT")));选择所有要进行排序操作的文字对象.
  24.          L1 (SsLength SA)
  25.          N1 0
  26.    )
  27.    ;将所有与选中对象相同前缀的文字进行筛选.
  28.    (Repeat L1
  29.       (SetQ Data (EntGet (SsName SA N1));选择集中对象的DXF组码.
  30.             WZNR (Cdr (Assoc 1 Data));该对象文字内容.
  31.             JYMC (XDRX_String_FindOneOf WZNR "0123456789")
  32.             JYMN (XDRX_String_Left WZNR JYMC)
  33.       )
  34.       (If (= JYMN TT)
  35.          (Progn
  36.             (SetQ OLDXH (AToI (XDRX_String_Remove WZNR 0 JYMC))
  37.                   PLZJB (List OLDXH N1)
  38.             )
  39.             (If (= Nil PLZZB)
  40.                (SetQ PLZZB (List PLZJB))
  41.                (SetQ PLZZB (Cons PLZJB PLZZB))
  42.             )   
  43.             )
  44.          )
  45.       (SetQ N1 (1+ N1))
  46.    )
  47.    ;将筛选后的对象按序号从小到大排列.
  48.    (SetQ PXZZC (Car (Apply 'XDRX_RListSort2 PLZZB))
  49.          L2 (Length PXZZC)
  50.          N1 0
  51.          Base (GetInt "\n请输入排序的开始号:")
  52.    )
  53.    (If (<= Base 0)
  54.       (Progn
  55.          (Alert "输入排序的开始号小于0!")
  56.          (Exit)
  57.       )
  58.    )   
  59.    (Repeat L2
  60.       (SetQ ZJZ (Nth N1 PXZZC)
  61.             Nam (Fix (Car ZJZ))
  62.             SEN (Fix (Cadr ZJZ))
  63.             Data (EntGet (SsName SA SEN))
  64.       )
  65.       (If (/= N1 0)
  66.          (Progn
  67.             (SetQ Nam1 (Fix (Car (Nth (1- N1) PXZZC))))
  68.             (If (/= Nam Nam1)(SetQ Base (1+ Base)))
  69.          )
  70.       )
  71.       (SetQ NEW1 (StrCat TT (IToA Base))
  72.             Data (Subst (Cons 1 NEW1) (Assoc 1 Data) Data)
  73.       )
  74.       (EntMod Data)
  75.       (SetQ N1 (1+ N1))
  76.    )
  77.    (Prompt (StrCat "本次操作后最大号为:" NEW1 "!"))
  78. )
  79.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 444个

财富等级: 日进斗金

 楼主| 发表于 2002-5-5 03:39:25 | 显示全部楼层

钢筋切换的LISP程序。

主要用于一级钢与二级钢之间的切换。
此程序不需要XDRX_API支持。

  1.   [FONT=courier new]
  2. (Defun C:YF_GJQH(/ Sel1 Len1 N1 Data OLD1 NEW1 NEW2 NEW3 NEW4)
  3.    (While (Not (SetQ Sel1 (SsGet '((0 . "TEXT"))))))
  4.    (SetQ Len1 (SsLength Sel1)
  5.          N1 0
  6.    )
  7.    (Repeat Len1
  8.       (SetQ Data (EntGet (SsName Sel1 N1))
  9.             N1 (1+ N1)
  10.             OLD1 (Cdr (Assoc 1 Data))
  11.             NEW1 (Vl-String-Subst (Chr 130) (Chr 131) OLD1)
  12.             NEW2 (Vl-String-Subst (Chr 131) (Chr 130) OLD1)
  13.             NEW3 (Vl-String-Subst "%%130" "%%131" OLD1)
  14.             NEW4 (Vl-String-Subst "%%131" "%%130" OLD1)
  15.       )
  16.       (If (/= OLD1 NEW1)(SetQ Data (Subst (Cons 1 NEW1) (Cons 1 OLD1) Data)))
  17.       (If (/= OLD1 NEW2)(SetQ Data (Subst (Cons 1 NEW2) (Cons 1 OLD1) Data)))
  18.       (If (/= OLD1 NEW3)(SetQ Data (Subst (Cons 1 NEW3) (Cons 1 OLD1) Data)))
  19.       (If (/= OLD1 NEW4)(SetQ Data (Subst (Cons 1 NEW4) (Cons 1 OLD1) Data)))
  20.       (EntMod Data)
  21.   )
  22.    (Prin1)
  23. )   
  24.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-7 07:13 , Processed in 0.421541 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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