Aled 发表于 2006-3-17 00:20:00

使用sssetfirst遇到的问题

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3>最近使用<FONT face="Times New Roman">sssetfirst</FONT>函数,发现一个奇怪的问题,我写了一个如下的程序</FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman" size=3>(defun test()</FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 6pt; mso-char-indent-count: .5"><FONT size=3><FONT face="Times New Roman">&nbsp;(setq ss1 (ssget))<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 12pt; mso-char-indent-count: 1.0"><FONT face="Times New Roman" size=3>(sssetfirst nil ss1)</FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman">)&nbsp; </FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3>执行程序后,必须在图面上再用鼠标点选一下才会出现<FONT face="Times New Roman">ss1</FONT>所决定的范围,可是如果直接在<FONT face="Times New Roman">command line</FONT>输入<FONT face="Times New Roman">(sssetfirst nil ss1)</FONT>,不需用鼠标点选,就会直接出现<FONT face="Times New Roman">ss1</FONT>的范围,请问这是什么原因?要如何才能避免多一道鼠标点选的动作?</FONT></P>

lanjqka 发表于 2017-8-17 09:43:01

(setq ss1 (ssget))
替换成
(if (cadr (ssgetfirst))
    (progn (sssetfirst) (setq ss1 (ssget "_P")))
    (setq ss1 (ssget))
)

ljpnb 发表于 2006-3-17 07:52:00

<FONT face="Times New Roman" size=3>(sssetfirst nil ss1)改成(sssetfirst&nbsp;ss1 ss1)</FONT>

Aled 发表于 2006-3-17 10:03:00

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 12pt; mso-pagination: widow-orphan"><FONT size=3>情况似乎没有改善,我的作法为先选定一个区域的图形,然后在<FONT face="Times New Roman">command line</FONT>执行<FONT face="Times New Roman">(test)</FONT>,这时我必须在绘图区域上使用鼠标点一下,刚刚选择的图形才会出现,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 12pt; mso-pagination: widow-orphan"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 12pt; mso-pagination: widow-orphan"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 12pt; mso-pagination: widow-orphan"><FONT size=3>我主要的目的是要作选择集筛选的工作,例如把一个选择集的特定大小的方形挑选并标示出来,原先打算使用<FONT face="Times New Roman">Quick Select</FONT>功能,选择特定面积大小,可是每次还要先计算面积,使用起来不大方便,所以决定自己写个程序来作判断,可是在程序最后一行,使用<FONT face="Times New Roman">(sssetfirst nil ss1)</FONT>,竟会造成必须先在图面上<FONT face="Times New Roman">click</FONT>一下,<FONT face="Times New Roman">ss1</FONT>才会被标示出来,我认为这一个<FONT face="Times New Roman">click</FONT>动作相当多余,可是却不知如何避免,所以请各位高手指点迷津,谢谢!</FONT></P>

ljpnb 发表于 2006-3-17 10:49:00

起先没明白你的意思

(defun c:test ()
(setq ss1 (ssget "x" '((0 . "CIRCLE")))) ;_加上你需要过滤的条件
(sssetfirst nil ss1)
(princ)
)

meflying 发表于 2006-3-17 16:19:00

<P>建议先执行<FONT size=3><FONT face="Times New Roman">(setq ss1 (ssget))</FONT></FONT></P>
<P><FONT size=3><FONT face="Times New Roman">然后定义</FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT face="Times New Roman" size=3>(defun test()</FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 12pt; mso-char-indent-count: 1.0"><FONT face="Times New Roman" size=3>(sssetfirst nil ss1)</FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><FONT face="Times New Roman">)&nbsp; </FONT></FONT></P>
<P>不过你的"点一下"到底是一个什么样的过程?很难想象</P>

黄河 发表于 2007-8-18 19:13:00

<p>当你选择成功时,不要按空格或回车,若取消按ESC,否则就是你这样的情况</p>

i-Stone 发表于 2007-8-19 09:49:00

<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman" size="3">(defun test()</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 6pt; mso-char-indent-count: .5;"><font size="3"><font face="Times New Roman">&nbsp;(setq ss1 (ssget))<p></p></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 12pt; mso-char-indent-count: 1.0;"><font face="Times New Roman" size="3">(sssetfirst nil ss1)</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font size="3"><font face="Times New Roman">)</font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman">还真是这样,我执行的结果也是要点一下.有意思.不过我也不知道原因</font></p>

oyxx1023 发表于 2007-8-22 10:34:00

我也得出同样的结论,不解...

祥子 发表于 2011-7-9 20:51:46

我也出现这样的情况,在过虑好的选集如 SS , 正常情况下(sssetfirst nil ss)

ss选集的图元亮显并显示夹点,但有些时候不会马上显示,需要用鼠标在绘图区点下才显示

出来,不知怎么回事?

zhynt 发表于 2011-7-9 21:28:20

在(sssetfirst nil ss1)后面加上
    (sssetfirst nil)就ok了
页: [1] 2
查看完整版本: 使用sssetfirst遇到的问题