明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1298|回复: 4

怎么用ssnamex获得多个选择区域,并重新选择这些区域

[复制链接]
发表于 2020-6-2 21:51:46 | 显示全部楼层 |阅读模式
本帖最后由 陈伟 于 2023-11-3 22:18 编辑




(defun c:tt () ; tt(批量框选拉伸)
  (setq n 0 lst '())
  (princ "\n请选择第 1 个选择集<退出>: ")
  (while (set (setq aa (read (strcat "ss" (itoa (setq n (1+ n))))))(ssget ":s"  ))
    (setq lst (cons aa lst))
    (princ (strcat "\n请选择第 " (itoa (1+ n)) " 个选择集<退出>: "))
  )
  (setq lst (append '(command ".stretch") lst '("" pause pause)))
  (eval lst)
  (princ)
)



填充图案拉伸(目的是代替CAD自带拉伸命令)
已写了一个图案拉伸工具,但是感觉还不够完美,原帖http://bbs.mjtd.com/thread-181607-1-1.html


下面这个程序只能实现单次选择,而且取消选择时线条和多段线不能取消,有大神能够帮忙实现像CAD自带拉伸工具一样自由选择取消吗(ssnamex获得多个选择区域,并重新选择这些区域)!!!本人小白一个,对LISP不懂,这些都是我从网络搜集拼凑在一起的!!!

(defun C:S123( )


(setq xyxyxy (last (ssnamex (setq ss (ssget)) 0)))  ;;获得ssget选择集的一个信息表。
(setq xt (last (cadr xyxyxy)) yt (last (cadddr xyxyxy)))     ;;提取刚才的窗选对角坐标。
(setq xt (trans xt 0 1)
      yt (trans yt 0 1)
)



(setq old_lay (getvar "clayer")) ;保存当前图层
   (setq layer "TC填充图案边界线")
        (if (not (tblsearch "layer" layer ))
        (progn   (command "layer" "new" "TC填充图案边界线" "s" "TC填充图案边界线" "C" 231 "" "L" "Continuous" "" "P" "N" "" "LW" 0"" "") )  );新建图层
  (COMMAND "clayer" layer) ;置当前图层

(setq sg (ssget "P" '((0 . "HATCH")) ) i -1 );过滤对象只选填充图案
  (if sg (while (setq s1 (ssname sg (setq i (1+ i))));批量生成填充边界
    (command "-hatchedit" s1 "b" "p" "y") ))
(setvar "clayer" old_lay) ;恢复原先图层

(setq s2 (ssget "c" xt yt ))
(command ".STRETCH" S2 "" pause pause)   ;;


(setq sggg (ssget "A"  '((8 . "TC填充图案边界线"))))
(COMMAND "_.erase"  sggg "");删除生成的边界线!

  (princ)
)








本帖子中包含更多资源

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

x
发表于 2020-6-4 20:53:12 | 显示全部楼层
顶一下,看看有没有大佬出手帮忙
 楼主| 发表于 2020-6-4 21:32:41 | 显示全部楼层
lxl217114 发表于 2020-6-4 20:53
顶一下,看看有没有大佬出手帮忙

看着有人留言,我兴奋的打开帖子一看!!!
 楼主| 发表于 2020-6-4 21:32:53 | 显示全部楼层
lxl217114 发表于 2020-6-4 20:53
顶一下,看看有没有大佬出手帮忙

看着有人留言,我兴奋的打开帖子一看!!!
 楼主| 发表于 2021-10-25 18:24:03 | 显示全部楼层
自己顶一个,经过不断摸索 解决方法如下
(defun C:Sass1( / loop  **loop        )
(defun *error*(msg)
                (setvar "clayer" old_lay);恢复原先图层
                                (setvar "Cecolor" #os6);恢复原先图层特性颜色               
                ;;---------------------------------------------------------------------------------------------------------------       
                  (setq s1220T (ssget"A"(List(cons 420(+(* 180 256 256)(* 106 256)226)))) )                                             
                  (if s1220T (COMMAND-S "_.erase"  (ssget "P"  '((8 . "0")) ) ""));删除生成的边界线!               
        )
(setq old_lay (getvar "clayer")) ;保存当前图层
(setq #os6 (getvar "Cecolor"))  ;保存当前图层特性颜色   
(princ "\n△△请选择△△:除第一个选择框外,其他选择框中的非关联填充图案不会被拉伸")

(setq loop(ssget         ))     ;;选择需要拉伸的填充图案或者其他图元。
(setq xyxyxy (last (ssnamex loop 0)))  ;;获得ssget选择集的一个信息表。
(setq stg (ssget "P" '((0 . "HATCH")) ) );过滤对象只选填充图案
  (if (not stg)(progn(command "SELECT"  "p"  pause ) (command ".STRETCH"  "p"  "" pause pause)    ));;当没有填充图案时直接拉伸
  (if stg (progn
(command "move" stg "" "_NONE" '(100 100) "_NONE" '(100 100))
  (COMMAND "clayer" "0" "cecolor" "RGB:180,106,226" ) ;置0层为当前图层
(setq sg (ssget "P" ) i -1 );选择需要循环生成边界线的填充图案
  (if sg (while (setq s1 (ssname sg (setq i (1+ i))));批量生成填充边界
    (command "-hatchedit" s1 "b" "p" "y")   )) ;批量生成填充边界,选择边界线,后置边界线
(setvar "clayer" old_lay);恢复原先图层
(setvar "Cecolor" #os6);恢复原先图层特性颜色


(setq n 0)
(repeat (sslength  loop)
(setq xyxyxy (last (ssnamex loop n)))  ;;获得ssget选择集的一个信息表。  
(setq xt (last (cadr xyxyxy)) yt (last (cadddr xyxyxy)))     ;;提取刚才的窗选对角坐标。
(setq xt (trans xt 0 1)  yt (trans yt 0 1) )
(setq  ss (ssget "c"  xt  yt ) )
(command ".STRETCH"  "p"  "" pause pause)   ;;
(setq n (1+ n))
) ;endrepeat



(setq ss021TT (ssget"A"(List(cons 420(+(* 180 256 256)(* 106 256)226)))) )
(if ss021TT (COMMAND "_.erase"  (ssget "P"  '((8 . "0")) ) "")    )) );删除生成的边界线!
(princ "\n*********拉伸完毕,欢迎访问明经论坛交流,中联合创设计有限公司滇西分公司制作")
  (princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 01:37 , Processed in 0.191390 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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