乐筑天下

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

[编程交流] 视口

[复制链接]

32

主题

98

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 17:10:06 | 显示全部楼层 |阅读模式
我要开始为我的视口制作一个图层
 
谁能帮我用lisp程序来;
 
getvar oldlayer
使层“vport”颜色49不打印
生成视口//
setvar oldlayer
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:25:49 | 显示全部楼层
可能是这样:
 
  1. (defun c:vp (/ oldlay)
  2.    (setq oldlay (getvar "clayer"))
  3.    (setvar "cmdecho" 0)
  4.    (if (/= (getvar "ctab") "Model")
  5.        (progn
  6.            (if (not (tblsearch "LAYER" "vport"))
  7.            (command "-layer" "M" "vport" "C" "49" "vport" "P" "N" "vport" "")
  8.            (setvar "clayer" "vport")
  9.            ) ; end if
  10.            (command "-vports"
  11.                pause
  12.                pause
  13.            ) ; end command
  14.            (setvar "clayer" oldlay)
  15.        ) ; end progn
  16.        (alert "Viewport Cannot be Drawn in Model Space.")
  17.    ) ; end if
  18.    (setvar "cmdecho" 1)
  19.    (princ)
  20. ) ; end defun
回复

使用道具 举报

32

主题

98

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 17:32:08 | 显示全部楼层
它工作得很好!非常感谢。
回复

使用道具 举报

1

主题

133

帖子

145

银币

初来乍到

Rank: 1

铜币
4
发表于 2022-7-6 17:44:13 | 显示全部楼层
有必要吗?
 
难道你不需要设置一个模板来开始所有的绘图吗?
回复

使用道具 举报

32

主题

98

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 17:50:36 | 显示全部楼层
不幸的是,是的
 
我是承包商
 
我使用了许多具有不同启动模板的autocad风格的机器
回复

使用道具 举报

1

主题

133

帖子

145

银币

初来乍到

Rank: 1

铜币
4
发表于 2022-7-6 17:57:12 | 显示全部楼层
我想我在这里有点模糊,但是你怎么加载Lisp程序呢?你会把它加载到每个客户的机器上吗?它会活在U盘上吗?
 
如果你不得不让模板具有可移植性,那么它仍然不是最简单的解决方案吗?
 
难道不可能在线存储模板,以便在任何有互联网连接的地方都可以轻松访问它吗?
 
(很抱歉问这么多问题,但建立有效的系统是我最感兴趣的:wink:)
回复

使用道具 举报

32

主题

98

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 18:04:41 | 显示全部楼层
如果我试着将所有的自定义项保持为一种类型,(lisp),那么就更容易记住。
 
否则,我要查找多个目录和更新文件。
 
确实,模板可能已经制作了vport层,并且可以绘制视口。但是,如果我想要另一个,我会将vport层置为当前,绘制vport,并将之前绘制的层置为当前。
 
还有很多我工作的地方已经有了一个模板,有些地方不想碰它。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 18:18:18 | 显示全部楼层
模板新手的优点,
 
使用模板(以及已经创建的vport层),您仍然需要记住在绘制端口之前切换到vport层,然后在绘制其他对象之前切换回。这显然需要更多的时间,并且LISP发布更快,因为如果已经创建了vport层,它不会复制vport层。
 
解决这个问题的另一种方法是使用反应堆——我最近(在ASMI和其他人的帮助下)了解了一些。
 
下面是一个可以使用模板的反应器。
 
  1. ; Layer Director
  2. (vl-load-com)
  3. (vlr-command-reactor
  4.    nil '((:vlr-commandWillstart . startCommand))
  5. ) ; end command reactor
  6. (vlr-command-reactor
  7.    nil '((:vlr-commandEnded . endcommand))
  8. ) ; end command reactor
  9. (vlr-command-reactor
  10.    nil '((:vlr-commandCancelled . cancelCommand))
  11. ) ; end command reactor
  12. (defun startCommand (calling-reactor startcommandInfo / thecommandstart)
  13.    (setq oldlay (getvar "clayer"))
  14.    (setq thecommandstart (nth 0 startcommandInfo))
  15.    (cond
  16.        ((= thecommandstart "+VPORTS")
  17.         (setvar "clayer" "VPORT")
  18.        ) ; end condition
  19.    ) ; end cond
  20.    (princ)
  21. ) ; end startcommand
  22. (defun endCommand (calling-reactor endcommandInfo / thecommandend)
  23.    (setq thecommandend (nth 0 endcommandInfo))
  24.    (cond
  25.        ((= thecommandend "+VPORTS")
  26.         (setvar "clayer" oldlay)
  27.        ) ; end condition
  28.    ) ; end cond
  29.    (princ)
  30. ) ; end endCommand
  31. (defun cancelCommand (calling-reactor cancelcommandInfo / thecommandcancel)
  32.    (setq thecommandcancel (nth 0 cancelcommandInfo))
  33.    (cond
  34.        ((= thecommandcancel "+VPORTS")
  35.         (setvar "clayer" oldlay)
  36.        ) ; end condition
  37.    ) ; end cond
  38.    (princ)
  39. ) ; end cancelCommand
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:41 , Processed in 0.678995 second(s), 68 queries .

© 2020-2025 乐筑天下

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