明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1192|回复: 3

[讨论] 如何先在图形里选择图元,在传递给参数ss

[复制链接]
发表于 2011-3-14 21:23:53 | 显示全部楼层 |阅读模式
好像有个命令ssgetfirst,或者sssetfirst,但不知道如何使用,求这样的lsp例子,谢谢了~~~
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-3-14 21:35:21 | 显示全部楼层
(setq ss (cadr (ssgetfirst)))
语法

    (ssgetfirst)

功能及参数

    此函数将用来决定哪一个图形已被选取。之后将返回两个选择集的表。在此图元选择集表里的第1个图元, 已经被获取, 但是却未被选取。表里的第二个图元既为被获取, 也是被选取的。只有在模型空间与纸张空间的图元可以被此函数来分析。而非图形图元与图块图元则无法使用此函数。

 楼主| 发表于 2011-3-14 21:38:44 | 显示全部楼层
回复 Gu_xl 的帖子

我想做一个先选择,然后创建块的程序,但是总是不能传递选择,
代码如下:

(defun    c:k2    ()
  (setvar    "CMDECHO"    0)

  (if (or (setq ss (cdr (ssgetfirst))) (setq ss (ssget)))
((progn)
  (setq ss (sssetfirst))
           (setq pt (getpoint    "\n图块插入点 :"))
           (setq bnm (getstring    "\n块名 :"))


   (command    "-block" bnm pt ss "" "-insert" bnm pt "" "" "")
  
  )
)


; (if    (= ss nil)
  ;; (princ    "\n选择建块图元 :")
; (setq ss (ssget))
;)

     (setvar    "CMDECHO"    1)
  (princ)
)
 楼主| 发表于 2011-3-14 21:44:55 | 显示全部楼层
回复 Gu_xl 的帖子

代码改为如下后可以运行,有结果,但是有错误提示,不知道为什么。。

(defun    c:k2    ()
  (setvar    "CMDECHO"    0)

      (if (= 1 (logand 1 (getvar "pickfirst")))
             (setq ss (ssgetfirst))
           )

; (if    (= ss nil)
  ;; (princ    "\n选择建块图元 :")
; (setq ss (ssget))
;)

     (if (apply 'or ss)
             (apply 'sssetfirst ss)
           )



           (setq pt (getpoint    "\n图块插入点 :"))
           (setq bnm (getstring    "\n块名 :"))


   (command    "-block" bnm pt ss "" "-insert" bnm pt "" "" "")
  
  (setvar    "CMDECHO"    1)
  (princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-11 05:50 , Processed in 0.170379 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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