明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1467|回复: 6

[提问] 程序有问题,期待您的帮助

[复制链接]
发表于 2014-10-16 21:23:19 | 显示全部楼层 |阅读模式
     各位前辈好,我想编写一个小程序,下面是其中的一个片段,功能是合并“TEXT”和“MTEXT”的选择集。
但是每次都卡在(ssname ss2 i)过不去,百思不得其解,请大神给分析一下原因,非常感谢。

(setq ss1 (ssget "X" '((0 . "TEXT"))))
  (command "chprop" ss1 "" "c" 4 "")
  (prin1)
  (setq ss2 (ssget "X" '((0 . "MTEXT"))))
  (command "chprop" ss2 "" "c" 4 "")
  (prin1)
                                               
  (if (and ss1 ss2)
    (progn
      ((setq i 0)
        (while (setq e1 (ssname ss2 i));此处(ssname ss2 i)过不去
          (ssadd e1 ss1)
          (setq i (1+ i))
        )
        (setq ss3 ss1)
      )
    )
    (progn
      (if (= nil ss1)
        (setq ss3 ss2)
        (setq ss3 ss1)
      )
    )
  )
非常感谢
发表于 2014-10-16 21:33:46 | 显示全部楼层
应该用(sslength ss2)得到ss2的长度后用repeat循环
发表于 2014-10-16 21:40:35 | 显示全部楼层
用'((0 . "TEXT,MTEXT"))不行嗎?
发表于 2014-10-16 22:31:47 | 显示全部楼层
本帖最后由 wzg356 于 2014-10-16 22:37 编辑

第一个progn 多了一对括号,应为
(progn
      (setq i 0)
        (while (setq e1 (ssname ss2 i))
          (ssadd e1 ss1)
          (setq i (1+ i))
        )
        (setq ss3 ss1)
      
    )
应该可以执行了


另外,如果仅就这段代码而言:楼上的够了,即:
(setq ss3 "X" '((0 . "TEXT,MTEXT")))
  (command "chprop" ss3 "" "c" 4 "")
发表于 2014-10-16 22:48:13 | 显示全部楼层
本帖最后由 firstinti 于 2014-10-16 22:52 编辑

(setq ss3(ssget "X" '((0 . "*TEXT"))))
发表于 2014-10-17 08:22:02 | 显示全部楼层
法一:

  1.   (setq ss1 (ssget "X" '((0 . "TEXT"))))
  2.   (setq ss2 (ssget "X" '((0 . "MTEXT"))))
  3.   (command "chprop" ss1 ss2 "" "c" 4 "")
  4.   (prin1)
  5.                                                 
  6.   (if (and ss1 ss2)
  7.      (progn
  8.       (repeat (setq i (sslength ss2))
  9.           (ssadd (ssname ss2 (setq i (1- i))) ss1)
  10.       )
  11.       (setq ss3 ss1)
  12.     )
  13.     (setq ss3 (if ss1) ss1 ss2)
  14.   )
法二:
  1.   (setq ss1 (ssget "X" '((0 . "TEXT"))))
  2.   (setq ss2 (ssget "X" '((0 . "MTEXT"))))
  3.   (command "select" ss1 ss2 "")
  4.   (setq ss3 (ssget "P"))
  5.   (command "chprop" ss3 "" "c" 4 "")
法三:
  1.   (setq ss1 (ssget "X" '((0 . "TEXT"))))
  2.   (setq ss2 (ssget "X" '((0 . "MTEXT"))))
  3.   (command "chprop" ss1 ss2 "" "c" 4 "")
  4.   (setq ss3 (ssget "P"))
法四:
  1. (setq ss3 (ssget "X" '((0 . "*TEXT"))))
发表于 2014-10-17 08:31:37 | 显示全部楼层
(setq ss1 (ssget "X" '((0 . "TEXT"))))
   (command "chprop" ss1 "" "c" 4 "")
   (prin1)
   (setq ss2 (ssget "X" '((0 . "MTEXT"))))
   (command "chprop" ss2 "" "c" 2 "")
   (prin1)
                                                
   (if (and ss1 ss2)
     (progn
        (setq i 0)
        (setq ss2number(sslength ss2))
         (while ss2number
          (setq e1 (ssname ss2 i));此?(ssname ss2 i)?不去
          (ssadd e1 ss1)
           (setq i (1+ i)
         )
         (setq ss3 ss1)
       )
     )
     (progn
       (if (= nil ss1)
         (setq ss3 ss2)
         (setq ss3 ss1)
       )
     )
   )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-24 01:52 , Processed in 0.164030 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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