明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 787|回复: 4

[提问] 兄弟们:请问如何得到剪切后的选择集?谢谢!

[复制链接]
发表于 2018-6-4 11:46:28 | 显示全部楼层 |阅读模式
兄弟们:请问如何得到剪切后的选择集?谢谢!
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-6-4 11:50:44 | 显示全部楼层
发表于 2018-6-4 13:03:54 | 显示全部楼层
剪切前后选择集是不会变化的。
发表于 2018-6-4 13:14:46 | 显示全部楼层
我也不太懂,我用clipbrd查看剪切板,是图片格式的,但如果只是图版,那么它粘贴到cad中又变回图元。因为高版本复制不到低版,而低版却可以复制到高版,所以一开始我以为它是以临时文件的形式来保存,然后clipboard里应该是文件路径,但事实上却不是。
 楼主| 发表于 2018-6-4 14:33:27 | 显示全部楼层
非常感谢各位兄弟的帮忙,我想得到剪切后的对象集,现附图及代码?请兄弟们帮忙找出错在哪?非常感谢!

(defun c:tt(/ ss)
  (command ".UNDO" "BE")
  (setq BoundaryLine (entsel "\n选择修剪边界线 :"))
  (if BoundaryLine (setq ss (LZXTrim BoundaryLine)))
  (command ".UNDO" "E")
  (sssetfirst ss ss)
  (princ)
)
(defun LZXTrim (BoundaryLine / Vcmdecho Vosmode newObj obj lst n i ptl ss)
  (setq Vcmdecho (getvar "cmdecho"))
  (setq Vosmode (getvar "osmode"))
  (setvar "cmdecho" 0)
  (setvar "osmode" 0)
  (vl-cmdf "zoom" "e")
  (setq obj (entlast));标记对象
  (vl-cmdf "offset" 1 BoundaryLine "-1000,-1000" "")
  (setq newObj (entlast))
  (setq lst (PLpt newObj))
  (setq n (length lst))
  (vl-cmdf "trim" BoundaryLine "" "F")
  (setq i 0)
  (repeat n
    (vl-cmdf (nth i lst))
    (setq i (+ i 1))
  )
  (vl-cmdf (nth 0 lst) "" "")
  (setq ss (ssadd))
  (while (setq obj (entnext obj)) (ssadd obj ss));标记对象后创建对象组成选择集
  (entdel newObj)
  (vl-cmdf "zoom" "p")
  (if Vosmode (setvar "osmode" Vosmode))
  (if Vcmdecho (setvar "cmdecho" Vcmdecho))
  ss
)


(defun PLpt (ent / key)
  (setq key 10)
  (setq ent (if (= (type ent) 'LIST) (car ent) ent))
  (setq ent (entget ent))
  (apply 'append (mapcar '(lambda (x) (if (eq (car x) key) (list (cdr x)))) ent))
)

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-5-19 12:55 , Processed in 0.153737 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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