乐筑天下

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

[编程交流] 带预览o的拉伸命令

[复制链接]

56

主题

256

帖子

230

银币

后起之秀

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

铜币
253
发表于 2022-7-5 16:24:34 | 显示全部楼层 |阅读模式
下面的测试代码没有显示光标所在的pt2的新位置。
 
任何人都知道如何让它发挥作用。DRAGMODE varaible设置为ON。
 
  1. (defun c:test (/ rec1 rec2)
  2. (setq rec1 (getpoint "select first "))
  3. (setq rec2 (getcorner rec1 "select second"))
  4. (setq pt1 (getpoint "\nSelect Base Point : "))
  5. (setq pt2 (getpoint pt1 "\nSelect Second Point : "))
  6. (command "stretch" "c" rec1 rec2 "" "_non" pt1 "_non" pt2)
  7. )
回复

使用道具 举报

27

主题

113

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
132
发表于 2022-7-5 16:42:39 | 显示全部楼层
为什么它会显示什么?您只需设置一些坐标,然后命令“立即”运行。因此,在执行拉伸命令时通常会看到的“预览”部分没有显示。
 
我想知道这个lisp的目的是什么,除了STRETCH命令本身没有做好准备外,它没有做任何额外的事情。
 
我使用stretch命令的方式是输入“S”表示stretch。然后选择要拉伸的对象,单击起点和终点。无需R(ectangle)动作。
回复

使用道具 举报

56

主题

256

帖子

230

银币

后起之秀

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

铜币
253
发表于 2022-7-5 16:56:35 | 显示全部楼层
这是我遇到问题的代码的精简版本。我不是想重新发明拉伸命令,我只需要知道。是否可以修改该代码以显示pt2的位置。
回复

使用道具 举报

27

主题

113

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
132
发表于 2022-7-5 17:18:01 | 显示全部楼层
  1. (command "stretch" "c" rec1 rec2 "" "_non" pt1 "_non" pause)

 
并拆除PT2的SETQ部分
 
E: 经过测试,似乎有效。”lisp代码中的“暂停”表示手动输入,以防您需要知道它的功能。
回复

使用道具 举报

56

主题

256

帖子

230

银币

后起之秀

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

铜币
253
发表于 2022-7-5 17:24:48 | 显示全部楼层
 
不幸的是,我不能在这里使用暂停。它需要保留pt2和setvar pt2。
 
请参阅此处的完整代码:
  1. (defun c:BS ( /
  2. *error*
  3. ans
  4. doc
  5. grid
  6. joint
  7. pt1
  8. pt2
  9. ss
  10. vars
  11. )
  12. (defun *error* (msg)
  13. (if vars (SetVars vars))
  14. (vla-endundomark doc)
  15. (if (not (wcmatch (strcase msg) "*CANCEL*,*EXIT*"))
  16.         (princ (strcat "\n<< Error : " msg " >>"))
  17.         )
  18. (princ)
  19. )
  20. (setq doc (vla-get-activedocument (setq cad (vlax-get-acad-object))))
  21. (vla-endundomark doc)
  22. (vla-startundomark doc)
  23. (if
  24. (and
  25.         (setq ss (ssget))
  26.         (progn
  27.                 (SF:redraw_sset ss :vlax-true)
  28.                 (initget "Minus Stand Plus Custom None")
  29.                 (setq ans (getkword "\nCO Size ? (Stand Brick=112.5mm / Joint=10mm)[Minus ( co - )/Stand ( co )/Plus ( co + )/Custom interval/None] <Stand>: "))
  30.                 (cond
  31.                         ((or (not ans) (= "Stand" ans))
  32.                                 (setq grid 112.5)
  33.                                 (setq joint 0.0)
  34.                                 )
  35.                         ((= "Minus" ans)
  36.                                 (setq grid 112.5)
  37.                                 (setq joint -10.0)
  38.                                 )
  39.                         ((= "Plus" ans)
  40.                                 (setq grid 112.5)
  41.                                 (setq joint 10.0)
  42.                                 )
  43.                         ((= "Custom" ans)
  44.                                 (setq grid (getreal "\nCustom interval size : "))
  45.                                 (setq joint 0.0)
  46.                                 )
  47.                         )
  48.                 T
  49.                 )
  50.         (setq pt1 (getpoint "\nSelect Base Point : "))
  51.         (setq vars
  52.                 (SetVars
  53.                         (if (= "None" ans)
  54.                                 '((cmdecho 0))
  55.                                 (list
  56.                                         '(cmdecho 0)
  57.                                         (list 'snapbase (list (car pt1) (cadr pt1)))
  58.                                         '(griddisplay 0)
  59.                                         '(gridmode 1)
  60.                                         '(snapmode 1)
  61.                                         '(dragmode 2)
  62.                                         '(osmode 0)
  63.                                         '(orthomode 1)
  64.                                         (list 'gridunit (list grid grid))
  65.                                         (list 'snapunit (list grid grid))
  66.                                         )
  67.                                 )
  68.                         )
  69.                 )
  70.         (setq pt2 (getpoint pt1 "\nSelect Second Point : "))
  71.         )
  72. (progn
  73.         (if grid
  74.                 (setq pt2 (ModularizePoint pt2 pt1 grid joint))
  75.                 )
  76.                 ; (command "_.stretch" ss "" "_non" pt1 "_non" (list (car pt2) (cadr pt2)))
  77.                 (command "stretch" ss "" "_non" pt1 "_non" pt2)
  78.                 (SF:redraw_sset ss :vlax-false)
  79.                 (princ
  80.                         (strcat
  81.                                 "\nModular dimension : " (if grid "ON " "OFF ")
  82.                                 "\nStretched : " (rtos (distance pt1 pt2)) " "
  83.                                 )
  84.                         )
  85.                 )
  86. )
  87. (if vars (SetVars vars))
  88. (vla-endundomark doc)
  89. (princ)
  90. )
  91. ;; by 3dwannab
  92. ;; Usage:
  93. ;; (SF:redraw_sset ss :vlax-true)
  94. ;; (SF:redraw_sset ss :vlax-false)
  95. (defun SF:redraw_sset (ent boolean / ent)
  96. (repeat (setq in (sslength ent))
  97.         (vla-highlight (vlax-ename->vla-object (ssname ent (setq in (1- in)))) boolean)
  98.         )
  99. )
  100. ;; Round half towards pos. or neg. infinity.
  101. (defun Round (num)
  102. (fix ((if (minusp num) - +) num 0.5))
  103. )
  104. ;; Recalculate pt so that the X, Y and Z distance to base are n times module plus joint.
  105. ;; Written by Roy_043 - http://www.cadtutor.net/forum/showthread.php?99652-Stretch-in-X-axis-with-choosen-value-in-those-increments&p=678315&viewfull=1#post678315
  106. (defun ModularizePoint (pt base module joint)
  107. (mapcar
  108.         '(lambda (coordPt coordBase / delta)
  109.                 (setq delta (* module (Round (/ (- coordPt coordBase) (float module)))))
  110.                 (cond
  111.                         ((zerop delta)  coordBase)
  112.                         ((minusp delta) (+ coordBase delta (- joint)))
  113.                         (T              (+ coordBase delta joint))
  114.                         )
  115.                 )
  116.         pt
  117.         base
  118.         )
  119. )
  120. ;; setvars
  121. (defun SetVars (lst)
  122. (mapcar
  123.         '(lambda (sub / old)
  124.                 (setq old (getvar (car sub)))
  125.                 (if (cadr sub) (setvar (car sub) (cadr sub)))
  126.                 (list (car sub) old)
  127.                 )
  128.         lst
  129.         )
  130. )
  131. (vl-load-com)
  132. (princ)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-20 23:38 , Processed in 0.376690 second(s), 63 queries .

© 2020-2025 乐筑天下

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