乐筑天下

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

[编程交流] 帮助-尝试制作functi

[复制链接]

49

主题

177

帖子

130

银币

后起之秀

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

铜币
243
发表于 2022-7-5 13:16:32 | 显示全部楼层 |阅读模式
我正在努力使我的lisp例程透明化。该例程仅通过将视图窗口调整两个点来调用顶部方向。
 
  1. (defun test (/ cp wcp1 wcp2 ss)                                                                                                                        ; top orientation
  2.         (setq cp (getvar "viewctr"))
  3.         (setq wcp1 (list (- (car cp) 5) (- (cadr cp) 5) (caddr cp)))
  4.         (setq wcp2 (list (+ (car cp) 5) (+ (cadr cp) 5) (caddr cp)))
  5.         (setq ss (ssget "_C" wcp1 wcp2))
  6.         (command "_.view" "top")
  7.         (command "_.zoom" "O" ss "")
  8.        
  9. (princ)
  10. )

我发现这个方法可以使它透明
 
但是经过一些研究,我意识到(如果我错了,请纠正我),只要在例程中调用“命令”调用,这就不可能是透明的。到底有没有可能让它变得透明?如果没有,我如何修改代码以摆脱对该特定代码的“命令”调用?
 
谢谢你的建议。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 13:21:06 | 显示全部楼层
你好
在说任何与你的问题相关的话之前。。。你知道t是一个受保护的符号,在vanilla lisp中代表true吗?
回复

使用道具 举报

49

主题

177

帖子

130

银币

后起之秀

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

铜币
243
发表于 2022-7-5 13:24:21 | 显示全部楼层
是的,我知道,但不管怎样,这没有什么区别。让我们把“t”改为“test”。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 13:30:21 | 显示全部楼层
你试过了吗
 
好吧,透明度只适用于命令功能。
回复

使用道具 举报

49

主题

177

帖子

130

银币

后起之秀

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

铜币
243
发表于 2022-7-5 13:31:08 | 显示全部楼层
是的,我试过了。这没什么区别。整个想法
  1. vlax-add-cmd
是使例程作为标准Autocad命令功能运行。
 
那么,我应该停止梦想我的函数的透明度吗?
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 13:34:50 | 显示全部楼层
https://www.cadtutor.net/forum/topic/6354-is-it-possible/
 
可能会有帮助
 
回复

使用道具 举报

10

主题

58

帖子

55

银币

初来乍到

Rank: 1

铜币
44
发表于 2022-7-5 13:39:20 | 显示全部楼层
1.将(defun test(/…)重命名为(defun c:test(/…)。。。。
2、用途:
命令:line
命令:(c:测试)
.....
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 13:41:23 | 显示全部楼层
 
 
您好,我的建议是使用activeX方法
  1. (vl-load-com)
  2. (setq *acDoc* (vla-get-activedocument (vlax-get-acad-object)))
  3. (defun test (/ wc ss vw)
  4. (if (and (setq wc        (mapcar ''((f) (mapcar f (getvar "viewctr") '(5. 5. 0.))) '(- +))
  5.              ss        (apply 'ssget (cons "_C" wc))
  6.              )
  7.        (setq vw (vla-get-activeviewport *acdoc*))
  8.        )
  9.   (progn (vlax-put vw 'direction '(0. 0. 1.))
  10.          (vla-put-activeviewport *acdoc* vw)
  11.          (apply 'vla-zoomwindow (cons (vlax-get-acad-object) (mapcar 'vlax-3d-point wc)))
  12.          )
  13.     )
  14.   (princ)
  15.   )
  16. (vlax-add-cmd "test" 'test "test" 1)
  17. ;reference: Dev.Documentation
  18. ;ACRX_CMD_MODAL (0) Command cannot be invoked while another command is active.
  19. ;ACRX_CMD_TRANSPARENT (1) Command can be invoked while another command is active.
  20. ;ACRX_CMD_USEPICKSET (2) When the pickfirst set is retrieved it is cleared within AutoCAD.
  21. ;                           Command will be able to retrieve the pickfirst set. Command cannot retrieve or set grips.
  22. ;ACRX_CMD_REDRAW (4)

您是否在发出透明命令时添加了前缀“引号”(撇号)?
 
 

 
 
 
我记得类似于ortho 45的“透明”,但没有使用“vlax add cmd”,只是通过调用要包含括号的符号的函数
示例:(测试)(dd)等。。
 
 
回复

使用道具 举报

49

主题

177

帖子

130

银币

后起之秀

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

铜币
243
发表于 2022-7-5 13:48:15 | 显示全部楼层
嗯,正如我所想,通过取消“命令”调用,它起到了作用。感谢您提供activeX版本。
 
不过有一个小问题
 
最后的
  1. (apply 'vla-zoomwindow (cons (vlax-get-acad-object) (mapcar 'vlax-3d-point wc)))
效果不好。它会缩放到另一个区域,比如向上移动。知道吗?
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 13:48:36 | 显示全部楼层
 
抱歉,最小测试
  1. (setq wc (mapcar ''((f) (mapcar f (getvar "viewctr") '(5. 5. 0.))) '(+ -)))
第一个角点应低于上角点,即:将此“(+-)更改为“(+)?
 
另外,如果你想缩放多个物体?IMO boundingbox函数可能有帮助
只要activeX建议解决了这个问题,其余的就让你自己动手
141636jla9p9im9knf3pnz.png
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 00:47 , Processed in 4.311922 second(s), 74 queries .

© 2020-2025 乐筑天下

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