乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 7|回复: 4

[编程交流] entsel选取框大小

[复制链接]

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:24:24 | 显示全部楼层 |阅读模式
大家好,
我想知道,当提示用户输入entsel时,是否可以增加这个选取框的大小?
182425ykfitktfni8ttsfi.jpg
我试着使用cursorsize变量,但没有用。
回复

使用道具 举报

0

主题

9

帖子

12

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 17:44:21 | 显示全部楼层
您回答了自己的问题,变量是“pickbox”。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:56:28 | 显示全部楼层
 
谢谢你,伙计!
现在,我的问题似乎有点讽刺,但以下是我正在编写的代码的最终结果:
  1. ; VLD_Offset
  2. ; Perform offset, by detecting with cursor, from which side the entity is selected,
  3. ; and then the entity is offseted, corresponding to that side/orientation.
  4. (defun C:test ( / *error* oldcmd oldclp oldpxsz off-dist ent vla-obj P-pt C-pt T-pt )
  5. (vl-load-com)
  6. (defun *error* ( msg )
  7.         (if oldcmd (setvar 'cmdecho oldcmd))
  8.         (if oldclp (setvar 'clipromptlines oldclp))
  9.         (if oldpxsz (setvar 'pickbox oldpxsz))
  10.         (if (not (member msg '("Function cancelled" "quit / exit abort")))
  11.                 (princ (strcat "\nError: " msg))
  12.         )
  13.         (princ)
  14. )
  15. (initget 1)
  16. (if (setq off-dist (getreal "\nSpecify offset distance: "))
  17.         (progn
  18.                 (setvar 'errno 0)
  19.                 (setq oldcmd (getvar 'cmdecho))
  20.                 (setvar 'cmdecho 0)
  21.                 (setq oldclp (getvar 'clipromptlines))
  22.                 (setvar 'clipromptlines 1)
  23.                 (setq oldpxsz (getvar 'pickbox)) ; default value is 3
  24.                 (setvar 'pickbox (* oldpxsz 3))
  25.                 (while T
  26.                         (while
  27.                                 (not
  28.                                         (and
  29.                                                 (setq ent (entsel "\nPick an entity to offset: "))
  30.                                                 (member (cdr (assoc 0 (entget (car ent)))) (list "LINE" "LWPOLYLINE" "SPLINE" "CIRCLE" "ARC" "XLINE" "RAY"))
  31.                                         )
  32.                                 )
  33.                                 (if (or (= (getvar 'errno) 7) (null (car ent))) (princ "\nYou missed, try again!") )
  34.                         ); while
  35.                         (progn
  36.                                 (setq vla-obj (vlax-ename->vla-object (car ent)))
  37.                                 (setq P-pt (cadr ent)) ; pick point
  38.                                 (setq C-pt (vlax-curve-getClosestPointTo vla-obj P-pt)) ; closest point
  39.                                 (setq T-pt (polar C-pt (angle C-pt P-pt) off-dist)) ; trough point
  40.                                 (vl-cmdf "_.OFFSET" "T" ent T-pt "E")
  41.                         )
  42.                 ); while T
  43.         ); progn
  44. ); if off-dist
  45. (princ)
  46. ); defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:10:06 | 显示全部楼层
这是一种糟糕的做法,因为用户通过崩溃程序(使用Esc)被迫退出循环;考虑测试用户是否取消了选择提示,并将此条件用作while循环的测试表达式。
 
注意,progn表达式也不是必需的,因为while将接受测试表达式参数之后的多个表达式参数。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:30:16 | 显示全部楼层
我使用的示例,ent将返回false
 
  1. (alert "pick objects select a blank area to exit")
  2. (while
  3.      (setq ent (entsel "\nPick an entity to offset: "))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 03:29 , Processed in 0.515550 second(s), 76 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表