乐筑天下

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

[编程交流] 从模板fi开始绘制

[复制链接]

17

主题

127

帖子

110

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 10:40:07 | 显示全部楼层 |阅读模式
有谁能告诉我为什么下面的代码无法基于模板启动新图形?
 
  1. (defun msc_elec (templateName)
  2. (setq templateName ("L:/MSC/Templates/msc_elec.dwt")
  3. (vla-activate (vla-add (vla-get-documents (vlax-get-acad-object)) templateName))
  4. (princ)
  5. )

 
我从这段代码中得到的错误是:“错误:参数太少”
 
我从h t p://hyperpics获得了这段代码。博客。com/beyond\u the\u ui/autolispvisual\u lisp,并将其放在另一个lisp例程中,该例程接受用户输入,从列表框中选择正确的项目,然后触发调用模板文件的此函数。这是在AutoCAD 2009上。
 
另外,如果有更好的方法开始基于模板的绘图,那么我洗耳恭听。我甚至尝试在lisp例程中传递基本命令:
 
  1. (defun msc_elec()
  2. (command "new" "msc_elec.dwt")
  3. (princ)

 
在本例中,它试图将“msc\u elec.dwt”作为命令传递,因此我得到“未知命令”msc\u elec.dwt。按F1键可获取帮助。”
 
谢谢
 
朗尼
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:46:22 | 显示全部楼层
(vl load com)在哪里?
回复

使用道具 举报

17

主题

127

帖子

110

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 10:50:07 | 显示全部楼层
我在我的阿卡多克里面。lsp,所以它总是加载的。这不对吗?
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:52:28 | 显示全部楼层
我只是仔细检查了一下。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:54:40 | 显示全部楼层
(setq templateName(findfile“L:/MSC/Templates/MSC\u elec.dwt”)
 
我想你错过了这个。但我不确定。
回复

使用道具 举报

17

主题

127

帖子

110

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 10:58:09 | 显示全部楼层
谢谢我试试看。
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 11:02:33 | 显示全部楼层
未经测试。。。但是试试看
  1. (defun msc_elec (/ templateName)
  2. (setq templateName "L:/MSC/Templates/msc_elec.dwt")
  3. (vla-activate (vla-add (vla-get-documents (vlax-get-acad-object)) templateName))
  4. (princ)
  5. )
回复

使用道具 举报

17

主题

127

帖子

110

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 11:06:51 | 显示全部楼层
lpseifert,你的代码成功了!!非常感谢。秃鹰,也谢谢你的帮助,我很感激。
 
因为我试图学习而不是仅仅复制代码,所以我看到您的代码之间的两个差异是这行中的反斜杠(我的代码中缺少):
 
  1. (defun msc_elec (/ templateName)

 
这一行中模板路径周围的括号(我包含了它们,您没有):
 
  1. (setq templateName "L:/MSC/Templates/msc_elec.dwt")

 
你能告诉我在第一部分中反斜杠是什么意思吗?为什么在第二部分中不需要用括号括住路径?我真的很感激。
 
顺便说一句,我在比较我的代码和你的代码时发现了一个错误。路径后缺少右括号。所以,即使我的代码逻辑很好,它仍然不会工作,我会在这里一整天,哈哈。
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 11:08:51 | 显示全部楼层
也许不是最好的解释,但依我看。。。
 
/后面的参数是局部变量;之前的参数(或如果/不存在)是要传递给函数的参数(在运行函数之前预定义)
这会管用的
但是必须运行函数才能将变量传递给函数
不需要括号,因为您正在将变量templateName设置为字符串(由开引号和闭引号定义)。Lisp希望开括号后的第一件事是函数。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:14:24 | 显示全部楼层
此选项已经存在,只需设置新的临时路径。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 17:14 , Processed in 0.625545 second(s), 72 queries .

© 2020-2025 乐筑天下

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