找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 494|回复: 1

[编程申请]:eachy斑竹请进

[复制链接]
发表于 2005-5-31 17:20:05 | 显示全部楼层 |阅读模式

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

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

×
eachy,如何把您的排序函数运用到下面的程序,请帮忙修改一下程序,能和你的排序函数结合起来

  1. (Defun c:SB (/ ss sscnt slist sname blkattlist blkattval newval k1 k2 d pre sub)
  2. (setvar "cmdecho" 0)
  3. (command ".undo" "BE")
  4. (princ "\n批量修改属性块值自动编号")
  5. (setq ss (ssget '((0 . "INSERT"))))


  6. (progn
  7.              (initget "0 1")
  8.              (setq k1 (getkword "\n[0 -按行/1 -按列]:"))
  9.            )
  10.            (progn
  11.              (initget "1 2 3 4")
  12.              (setq k2
  13.                     (getkword
  14.                       "\n[1-左上至右下/2-右上至左下/3-右下至左上/4-左下至右上]:"
  15.                     )
  16.              )
  17.            )
  18.            (setq d (getdist "\n输入允许误差: "))
  19.       )




  20. (setq sscnt (sslength ss) nno 0)
  21. (setq pd1 (cdr (assoc 10 (entget (ssname ss 0)))))
  22. (setq pd2 (cdr (assoc 10 (entget (ssname ss 1)))))
  23. (setq ang_pd (angle pd1 pd2))

  24. (cond ((= ang_pd (* pi 0.5))(sort_nam_Y_mi_ma)) ((= ang_pd (* pi 1.5))(sort_nam_Y_mi_ma))
  25. ((or (/= ang_pd (* pi 0.5)) (/= ang_pd (* pi 1.5))) (sort_nam_X_mi_ma))
  26. )

  27.   (ea:sort_entity elst (atoi k1) (atoi k2) d)
  28.                )




  29. (setq attrib_val (getstring "\n输入起始值:"))
  30. (setq ascii_val (ascii attrib_val))
  31. (if (= attrib_val "") (progn (command ".undo" "E") (exit)))
  32. (while (< nno sscnt)
  33. (setq sname (nth nno list_ent))
  34. (setq slist (entget sname))
  35. (if (assoc 66 slist)
  36. (progn
  37. (setq blkattlist (entget (entnext sname)))
  38. (setq newval
  39. (cond
  40. ((< (atoi attrib_val) 3000) (itoa (+ (atoi attrib_val) nno)))
  41. )
  42. )

  43. (setq blkattlist (subst (cons 1 newval) (assoc 1 blkattlist) blkattlist))
  44. (entmod blkattlist)
  45. (entupd sname)
  46. );progn
  47. );if
  48. (setq nno (1+ nno))
  49. );while
  50. (command ".undo" "E")
  51. (setvar "cmdecho" 1)
  52. (princ)
  53. )

  54. ;-----------------------------------------------
  55. ;;;;;;;;;根据X坐标从小到大将所选图元排序;;;;;;;;
  56. ;-----------------------------------------------
  57. (defun sort_nam_X_mi_ma ()
  58. (setq n (sslength ss))
  59. (setq list_ent nil)
  60. (setq m 0)
  61. (while (< m n)
  62. (setq list_ent (append list_ent (list (ssname ss m))))
  63. (setq m (1+ m))
  64. )
  65. (setq l 0)
  66. (setq m 1)
  67. (while (< l n)
  68. (setq b (nth l list_ent))
  69. (while (< m n)
  70. (setq c (nth m list_ent))
  71. (if (< (nth 1 (assoc 10 (entget c))) (nth 1 (assoc 10 (entget b))))
  72. (progn
  73. (setq list_ent (subst 'aa (nth l list_ent) list_ent))
  74. (setq list_ent (subst 'bb (nth m list_ent) list_ent))
  75. (setq list_ent (subst c 'aa list_ent))
  76. (setq list_ent (subst b 'bb list_ent))
  77. (setq b c)   


  78. )
  79. )
  80. (setq m (1+ m))
  81. )
  82. (setq l (1+ l))
  83. (setq m (1+ l))
  84. )
  85. );end defun


  86. ;-----------------------------------------------
  87. ;;;;;;;;;根据Y坐标从小到大将所选图元排序;;;;;;;;
  88. ;-----------------------------------------------
  89. (defun sort_nam_Y_mi_ma ()
  90. (setq n (sslength ss))
  91. (setq list_ent nil)
  92. (setq m 0)
  93. (while (< m n)
  94. (setq list_ent (append list_ent (list (ssname ss m))))
  95. (setq m (1+ m))
  96. )
  97. (setq l 0)
  98. (setq m 1)
  99. (while (< l n)
  100. (setq b (entget (nth l list_ent)))
  101. (while (< m n)
  102. (setq c (entget (nth m list_ent)))
  103. (if (< (nth 2 (assoc '10 c)) (nth 2 (assoc '10 b)))
  104. (progn
  105. (setq list_ent (subst 'aa (nth l list_ent) list_ent))
  106. (setq list_ent (subst 'bb (nth m list_ent) list_ent))
  107. (setq list_ent (subst c 'aa list_ent))
  108. (setq list_ent (subst b 'bb list_ent))
  109. (setq b c)
  110. )
  111. )
  112. (setq m (1+ m))
  113. )
  114. (setq l (1+ l))
  115. (setq m (1+ l))
  116. )
  117. );end defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-5-31 23:41:18 | 显示全部楼层
看不懂你的程序要做什么,首先属性块选择应该是
  1. (ssget '((0 . "insert") (66 . 1)))
复制代码

可以直接过滤出来,不用后面再判断,浪费时间。
2
属性块标号可以使用我写的编号程序http://www.xdcad.net/forum/showt ... y=&pagenumber=1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 06:51 , Processed in 0.177525 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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