乐筑天下

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

[编程交流] 菜鸟寻求帮助

[复制链接]

9

主题

34

帖子

25

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 07:35:20 | 显示全部楼层 |阅读模式
我有一些来自前一个线程的代码,我用我的lisp知识设法适应了这些代码,它帮助我定义了一个启动工作区,我想为每个新用户运行一次,以在他们的登录名中生成一个保存的版本。我想添加一个IF来检查这是否已经完成,而不是生成一条错误消息,因此在正常编程中,我想说一些类似的话:
 
如果工作区(loginname)存在,转到SETCURRENT-这是我目前在ACAD中使用的代码。lsp
 
  1. (defun-q mystartup ()
  2. (command "_wscurrent" "SWD Drafting")
  3. (command "_wssave" (getvar "loginname"))
  4. )
  5. ;(setq S::STARTUP (append S::STARTUP mystartup))
  6. (command "_wscurrent" (getvar "loginname"))

 
“SWD Drawing”工作区是不可编辑的,因为它在“Enterprise”中,所以我希望用户有一个单独命名的副本,他们可以自由编辑。它可以工作,但我必须在运行一次“mystartup”后将其注释掉,我希望能够利用IF跳过它。
 
我可能希望太多了,但有一些聪明的人让这看起来很容易。
 
谢谢同时我会继续搜索
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:42:33 | 显示全部楼层
请检查本讨论中提出的解决方案。将测试插入代码后:
  1. (if ([color=sienna]IsValidWorkspace [/color](getvar "loginname"))
  2. (setq S::STARTUP (append S::STARTUP mystartup))
  3. )
回复

使用道具 举报

9

主题

34

帖子

25

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 07:46:35 | 显示全部楼层
谢谢Mircea,
 
我已经浏览了推荐的帖子,但看不出如何应用它,解决方案似乎是生成一个日志文件并询问它,在没有打开文件的情况下可以创建日志吗在打开任何文件之前,我想在CAD启动期间应用这些设置。
 
现在,我可以从您的示例中了解如何应用IF,但我正在努力找到一种方法来定义命名工作区的true/false元素,例如,IF false(工作区名称不存在)运行mystartup else IF true set wscurrent“loginname”。
 
我欢迎任何其他建议。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:50:00 | 显示全部楼层
我同意Visual LISP应该能够直接查询可用工作区的对象模型(即使这需要迭代每个主工作区和企业CUI),而无需写入日志文件等,正如上面链接的帖子所示。
 
也许,这将有助于:
 
  1. (vl-load-com)
  2. (defun c:SetOrMakeUserWs (/ wsTemplate _WsCurrent user)
  3. ;; Change this string to be the name of the standard
  4. ;; workspace to be copied as the user workspace:
  5. (setq wsTemplate "SWD Drafting")
  6. ;; _WsCurrent sub-function:
  7. (defun _WsCurrent (workspace)
  8.    (if (vl-catch-all-error-p
  9.          (vl-catch-all-apply
  10.            'setvar
  11.            (list 'wscurrent workspace)
  12.          )
  13.        )
  14.      nil
  15.      T
  16.    )
  17. )
  18. ;;
  19. ;; Main code:
  20. ;;
  21. ;; If you cannot set the user's workspace current
  22. ;; (meaining it does not exist)
  23. (if (not (_WsCurrent (setq user (getvar 'loginname))))
  24.    ;; Attempt to set the template workspace current
  25.    (if (_WsCurrent wsTemplate)
  26.      (progn
  27.        ;; If successful, save the template workspace
  28.        ;; as the user workspace
  29.        (command "._wssave" user)
  30.        ;; Now that the user workspace exists, set
  31.        ;; it current
  32.        (_WsCurrent user)
  33.      )
  34.    )
  35. )
  36. (princ)
  37. )
  38. (c:SetOrMakeUserWs)
回复

使用道具 举报

9

主题

34

帖子

25

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 07:51:51 | 显示全部楼层
谢谢RenderMan这很好用
 
你能推荐一些好的参考书/网站让我学到更多吗?
回复

使用道具 举报

9

主题

34

帖子

25

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 07:55:51 | 显示全部楼层
哦,不!我被迷住了。
 
当我从ACAD运行你的代码时。lsp它可以工作,但不会从我加载的企业中保存快速访问工具栏。如果在CAD内进行I appload,则会中断,并显示错误消息:
 
083525q90rfx8ew0plfyod.jpg
 
当我关闭这个;代码完成了,一切都如我所愿。
 
你知道我该怎么解决这个问题吗?
 
谢谢
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:00:42 | 显示全部楼层
 
哦,不!我被迷住了。
 
当我从ACAD运行你的代码时。lsp它可以工作,但不会从我加载的企业中保存快速访问工具栏。如果在CAD内进行I appload,则会中断,并显示错误消息:
 

                               
登录/注册后可看大图

 
当我关闭这个;代码完成了,一切都如我所愿。
 
你知道我该怎么解决这个问题吗?
 
谢谢
</blockquote>
首先,不客气。
 
有几种方法可以做到这一点。您收到错误的原因是系统未完全加载。考虑到启动顺序,通过脚本(SCR)运行可能会更成功。然而,这将需要您修改应用程序图标的目标路径(副本),以包括/b开关(更多关于启动开关)。
 
应用程序图标的目标路径,伪代码:
脚本,伪代码:
  1. (load "[color=red][b]<YourFilePathHere>[/b][/color]\[color=blue][b]<YourLispFileName>[/b][/color].lsp")

 
有很多免费的资源可以学习,比如像这样的论坛,AfraLisp等等,但是,如果你想要一本好书,我推荐(图片链接):
 
Visual LISP开发人员的圣经
 
[/url]

                               
登录/注册后可看大图
回复

使用道具 举报

9

主题

34

帖子

25

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 08:06:02 | 显示全部楼层
感谢您的时间和投入,非常感谢。
 
我会仔细研究你的建议,并反馈我的进展
回复

使用道具 举报

9

主题

34

帖子

25

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-6 08:08:28 | 显示全部楼层
我已经查看了您的链接,并使用/b开关和脚本加载程序设置了一个测试。
 
它的工作原理就像我手动运行\u appload;我得到了worspace的真实副本,但我像以前一样收到了警告消息。我知道我可以勾选“不再显示此消息”(这确实有效),但它太混乱,无法部署到所有用户并要求他们勾选该框,是否可以禁用警告消息?
 
我想我们在一个不同的时区,所以我会做一些浏览,看看我是否可以找到一个解决方案,谢谢你的书推荐,我将在周末得到它!
回复

使用道具 举报

12

主题

179

帖子

167

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 08:11:39 | 显示全部楼层
RenderMan,谢谢你给我那本书的链接!我刚买了它(6美元,对吗?!)并将其发送到我的Kindle Fire、手机和电脑上的桌面应用程序。我本来可以免费使用借阅图书馆的,但我读了很多书,想让它由我支配。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 04:40 , Processed in 0.497252 second(s), 74 queries .

© 2020-2025 乐筑天下

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