找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2214|回复: 12

[求助] 为什么SSSetfirst不能显示拉伸点夹点?

[复制链接]

已领礼包: 5060个

财富等级: 富甲天下

发表于 2017-3-29 16:56:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
;逆时针旋转90度
(defun c:r1 ( / ss n elist ent r)
  (setq ss (ssget))
  (repeat (setq n (sslength ss))
    (setq n (1- n)
  ent (ssname ss n)
  elist (entget ent)
  r (cdr (assoc 50 elist))
  )
    (if r
     (progn
      (setq r (+ r (/ pi 2))
    elist (subst (cons 50 r) (assoc 50 elist) elist)
    )
      (entmod elist)
      (entupd ent)
     )
    )
  )
  (sssetfirst nil)
  (sssetfirst nil ss)
  ;(command "_.PSELECT" ss "")
  
)
为什么旋转后要点一下才能显示拉伸点?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-3-29 17:14:32 | 显示全部楼层
你操作都是什么实体? 还是所有实体都是你说都这样?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-3-29 17:30:52 | 显示全部楼层
下面代码测试成功,你试试

  1. 命令: (sssetfirst nil (ssget))
  2. 选择对象: 指定对角点: 找到 3 个
  3. 选择对象:
  4. (nil <Selection set: 13>)


你的代码,应该是最后选择集是NIL,你的代码返回的是两个NIL (nil nil)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

 楼主| 发表于 2017-3-29 18:39:17 | 显示全部楼层
你测试过吗?我在2008和2013测试过都不行。我选的是图块,快速旋转90度,然后亮显夹点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-3-29 19:00:11 | 显示全部楼层

当然测试了,要不怎么直到你最后返回的是 (nil nil)

(sssetfirst nil (ssget))

你试下上面的代码,选择下实体,看看有夹点显示没


你的代码,你在 sssetfirst代码前面,打印下 ss 的值, 看看 ss 有值没?
你的代码不亮显,一定是 ss = NIL 了。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

 楼主| 发表于 2017-3-29 20:45:42 | 显示全部楼层
ss有对象,只有一个INSERT。
我是说测试一下c:R1这个命令。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-3-29 21:07:08 | 显示全部楼层

你的测试条件要和大家说清楚啊,你试试不旋转INSERT,旋转普通的线什么的,夹点显示不?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-3-29 21:18:53 | 显示全部楼层
本帖最后由 newer 于 2017-3-29 21:20 编辑

测试了你的代码R1,执行完后,你!ss 是没有值的,这就是为什么sssetfirst 返回时 (nil nil)的原因。
没显示夹点,那么一定是选择集没值的原因。

所以,你这样改

  1. (defun c:r1 (/ n elist ent r)
  2.   (setq ss (ssget))
  3.   (repeat (setq n (sslength ss))
  4.     (setq n     (1- n)
  5.           ent   (ssname ss n)
  6.           elist (entget ent)
  7.           r     (cdr (assoc 50 elist))
  8.     )
  9.     (if r
  10.       (progn
  11.         (setq r     (+ r (/ pi 2))
  12.               elist (subst (cons 50 r) (assoc 50 elist) elist)
  13.         )
  14.         (entmod elist)
  15.         (entupd ent)
  16.       )
  17.     )
  18.   )
  19.   (sssetfirst nil ss)
  20. )



命令: r1

选择对象: 指定对角点: 找到 1 个

选择对象:
(nil <Selection set: 53>) 返回的不是NIL了

就会显示夹点了,你看出代码和你的有什么不同了吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-3-29 23:07:01 | 显示全部楼层

写个API的

  1. (defun c:tt ()
  2.   (if (setq ss (ssget '((0 . "INSERT"))))
  3.     (progn
  4.       (mapcar '(lambda (x)
  5.                  (xdrx-entity-rotate
  6.                    x
  7.                    (/ pi 2.0)
  8.                    (xdrx-getpropertyvalue x "position")
  9.                  )
  10.                )
  11.               (xdrx-pickset->ents ss)
  12.       )
  13.       (sssetfirst nil ss)
  14.     )
  15.   )
  16.   (princ)
  17. )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

 楼主| 发表于 2017-3-30 08:42:11 | 显示全部楼层

不好意思,没表达清楚,做个动画来说明一下,用N版的代码在2016下测试一下:选 中图块,输入r1命令,执行完成后并不会亮显夹点,需要点击一下屏幕空白处才能亮显。 r1.gif

我要的效果是像图二一样:
r2.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2017-3-30 09:52:18 | 显示全部楼层

  1. ;;逆时针旋转90度
  2. (defun c:r1 (/ ss n elist ent r)
  3.   (if (setq ss (ssget))
  4.     (progn
  5.       (repeat (setq n (sslength ss))
  6.         (setq n            (1- n)
  7.               ent   (ssname ss n)
  8.               elist (entget ent)
  9.               r            (cdr (assoc 50 elist))
  10.         )
  11.         (if r
  12.           (progn
  13.             (setq r        (+ r (/ pi 2))
  14.                   elist        (subst (cons 50 r) (assoc 50 elist) elist)
  15.             )
  16.             (entmod elist)
  17.             (entupd ent)
  18.           )
  19.         )
  20.       )
  21.       (sssetfirst nil ss)
  22.       (vl-cmdf "regen")
  23.     )
  24.   )
  25.   (princ)
  26. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

 楼主| 发表于 2017-3-30 10:41:11 | 显示全部楼层
(vl-cmdf "regen")对于大图消耗太大,我用 copyclip都觉得不太合理。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-3-30 12:02:22 | 显示全部楼层

旋转块夹点.gif

  1. (defun c:r1 (/ ss n elist ent r)
  2.   (if (last (ssgetfirst))
  3.     (progn
  4.       (sssetfirst)
  5.       (setq ss (ssget "p"))
  6.     )
  7.     (setq ss (ssget))
  8.   )
  9.   (repeat (setq n (sslength ss))
  10.     (setq n        (1- n)
  11.           ent        (ssname ss n)
  12.           elist        (entget ent)
  13.           r        (cdr (assoc 50 elist))
  14.     )
  15.     (if        r
  16.       (progn
  17.         (setq r            (+ r (/ pi 2))
  18.               elist (subst (cons 50 r) (assoc 50 elist) elist)
  19.         )
  20.         (entmod elist)
  21.         (entupd ent)
  22.       )
  23.     )
  24.   )
  25.   (sssetfirst nil ss)
  26.   (princ)
  27. )


评分

参与人数 1D豆 +1 收起 理由
xinxirong + 1 热心帮忙奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-12 10:38 , Processed in 0.217273 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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