明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4180|回复: 29

[求助]需要大家的帮助 谢谢了

  [复制链接]
发表于 2003-4-7 14:24:00 | 显示全部楼层 |阅读模式
有没有一个函数可以将 几个固定的范围一起导出呀???
  例如:我的范围是 (p1,p2) (p3,p4) (p5,p6)  这三个范围中 p1为左下脚坐标,
  p2为右上脚坐标 ,这样够成了 一个范围。(p3,p4) (p5,p6) 类似。
   ssget函数能不能将这几个范围一起选择呀???????
  各位大侠谢谢2
发表于 2003-4-7 15:09:00 | 显示全部楼层

循环一下就可以了

;将你的点做成一个列表后循环,格式如下
;((pt1 pt2) (pt3 pt4) (pt5 pt6))
;如果只有三个范围的或者不循环,直接用ssadd一个一个加
(setq i 0)
(setq ss1 (ssadd))
(while (< i 3)
  (setq ss2 (ssget "w" (car (nth i ptlist)) (cadr (nth i ptlist))))
  (setq n (sslength ss2))
  (setq j 0)
  (while (< j n)
    (ssadd (ssname ss2 j) ss1)
    (setq j (1+ j))
  )
  (setq i (1+ i))
)
 楼主| 发表于 2003-4-8 09:56:00 | 显示全部楼层

求助急死了,老大我循环不来呀!列表放在什么函数的什么地方呀???你能在源程序上

本帖最后由 作者 于 2003-4-8 9:56:31 编辑

求助急死了,老大我循环不来呀!列表放在什么函数的什么地方呀???你能在源程序上给我提示嘛谢谢了[br](setq ptlist `((p1 p2) (p3 p4) (5 p6))
(setq i 0)
(setq ss1 (ssadd))
(while (< i 3)
  (setq ss2 (ssget "w" (car (nth i ptlist)) (cadr (nth i ptlist))))
  (setq n (sslength ss2))
  (setq j 0)
  (while (< j n)
    (ssadd (ssname ss2 j) ss1)
    (setq j (1+ j))
  )
  (setq i (1+ i))
)是不是这样呀? 如果是 ,怎么会总出错呀(SETQ 中参数太少: (SETQ PTLIST ` ((P1 P2) (P3 P4) (P5 P6)))
_$ )。
[此贴子已经被作者于2003-4-7 21:15:43编辑过]




[此贴子已经被作者于2003-4-8 8:47:57编辑过]
发表于 2003-4-8 08:01:00 | 显示全部楼层

方法1...注意:方法2

;;方法1
(command "_.select" "c" PT1 PT2 "c" PT3 PT4 "c" PT5 PT6 "")
(setq SS (ssget ""))

;;方法2
;;(SETQ PTLIST '((pt1 pt2) (pt3 pt4) (pt5 pt6)))

(setq PTLIST '(((-686.124 -272.54 0.0) (-212.592 243.979 0.0))
               ((-207.501 465.344 0.0) (92.9117 7.34723 0.0))
               ((98.0035 -203.84 0.0) (759.929 345.756 0.0))
              )
)
(command "_.select")
(foreach PT PTLIST
  (command "c" (car PT) (cadr PT))
)
(command "")
(setq SS (ssget "")
 楼主| 发表于 2003-4-8 10:47:00 | 显示全部楼层

求助急死了,老大我循环不来呀!列表放在什么函数的什么地方呀???你能在源程序上

求助急死了,老大我循环不来呀!列表放在什么函数的什么地方呀???你能在源程序上给我提示嘛谢谢了..([br](setq ptlist `((p1 p2) (p3 p4) (5 p6))
(setq i 0)
(setq ss1 (ssadd))
(while (< i 3)
  (setq ss2 (ssget "w" (car (nth i ptlist)) (cadr (nth i ptlist))))
  (setq n (sslength ss2))
  (setq j 0)
  (while (< j n)
    (ssadd (ssname ss2 j) ss1)
    (setq j (1+ j))
  )
  (setq i (1+ i))
)是不是这样呀? 如果是 ,怎么会总出错呀(SETQ 中参数太少: (SETQ PTLIST ` ((P1 P2) (P3 P4) (P5 P6)))
_$ )。
发表于 2003-4-8 11:36:00 | 显示全部楼层

这是什么?您的数据表搞错了吧?

发表于 2003-4-8 11:49:00 | 显示全部楼层

注意,点变量不可以用'((P1 P2)...),必须(list (list p1 p2)...)

(setq ptlist (list (list p1 p2) (list p3 p4) (list p5 p6)))
(setq i 0)
(setq ss1 (ssadd))
(while (< i 3)
  (setq ss2 (ssget "w" (car (nth i ptlist)) (cadr (nth i ptlist))))
  (if ss2 (progn
  (setq n (sslength ss2))
  (setq j 0)
  (while (< j n)
    (ssadd (ssname ss2 j) ss1)
    (setq j (1+ j))
  ) ))
  (setq i (1+ i))
)
  (sslength ss1)
)
发表于 2003-4-8 11:54:00 | 显示全部楼层

注意,点变量不可以用'((P1 P2)...),必须(list (list p1 p2)...)

(setq ptlist (list (list p1 p2) (list p3 p4) (list p5 p6)))
(setq i 0)
(setq ss1 (ssadd))
(while (< i 3)
  (setq ss2 (ssget "w" (car (nth i ptlist)) (cadr (nth i ptlist))))
  (if ss2 (progn
  (setq n (sslength ss2))
  (setq j 0)
  (while (< j n)
    (ssadd (ssname ss2 j) ss1)
    (setq j (1+ j))
  ) ))
  (setq i (1+ i))
)
  (sslength ss1)
)
 楼主| 发表于 2003-4-8 13:09:00 | 显示全部楼层

求助 还是有问题呀 。这是怎么回事?

现在这个程序 只能取出 最后一个范围(p5 p6)的内容。(p1 p2)(p3 p4)内容没有导出呀。
发表于 2003-4-8 14:28:00 | 显示全部楼层

我试过,没问题。把最后(sslength ss1)删掉,改成你的操作。注意,最后选择集为ss1

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

本版积分规则

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

GMT+8, 2024-11-26 08:34 , Processed in 0.184026 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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