乐筑天下

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

[编程交流] 我怎样才能写出一个Lisp程序的单词呢

[复制链接]

37

主题

158

帖子

124

银币

后起之秀

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

铜币
205
发表于 2022-7-6 07:55:19 | 显示全部楼层 |阅读模式
我想要这样的东西。显然,这不起作用,虽然有很多我错过了。但是我该怎么做呢
 
  1. (defun c:opend ( / dwg1 dwg2 dwg3)
  2. (setq dwg1 (C:\Jobs\dwg1.dwg))
  3. (setq dwg2 (C:\Jobs\dwg2.dwg))
  4. (setq dwg3 (C:\Jobs\dwg3.dwg))
  5. (prompt "\nwhat drawing would you like to open?")
  6. (command "open" dwg2)
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:00:34 | 显示全部楼层
由于您使用的是仍支持VBA的AutoCAD版本:
但是,请记住,每个图形都有自己的名称空间。
 
 
通常,当要在变量上存储路径时:
  1. [s](setq dwg1 (C:\Jobs\dwg1.dwg))[/s]
  2. (setq dwg1 [color=red]"[/color]C:\[color=red]\[/color]Jobs\[color=red]\[/color]dwg1.dwg[color=red]"[/color])
回复

使用道具 举报

37

主题

158

帖子

124

银币

后起之秀

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

铜币
205
发表于 2022-7-6 08:03:06 | 显示全部楼层
我越来越近了吗?
 
 
  1. (defun c:opend ( / dwg1 )
  2. (setq dwg1 "C:\\Jobs\\dwg1.dwg"))
  3. ((setq dwg (getkword "\nwhat drawing would you like to open? <>"))
  4. (command "_VBASTMT" (strcat "AcadApplication.Documents.Open dwg))
  5. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:05:04 | 显示全部楼层
或者,使用VisualLISP扩展:
  1. (vl-load-com)
  2. (setq dwg1 ""C:\\Jobs\\dwg1.dwg"")
  3. (vla-open (vla-get-documents (vla-get-application (vlax-get-acad-object))) "C:\\d1.dwg")
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:08:10 | 显示全部楼层
像这样的?虽然我真的不确定你希望通过这个实现什么。。。
  1. (defun c:opend ( / dwgName dwgPath )
  2.   (setq dwgPath "C:\\Jobs\")
  3.   
  4.   (initget 1 "DWG1 DWG2 DWG3")
  5.   (setq dwgName (getkword "\nWhat drawing would you like to open? (Dwg1/Dwg2/Dwg3):"))
  6.   (setq dwgName (strcat dwgPath """ dwgName ".dwg" """))
  7.   (command "_VBASTMT" (strcat "AcadApplication.Documents.Open " dwgName))
  8. )

 
你必须更加小心使用括号!
回复

使用道具 举报

37

主题

158

帖子

124

银币

后起之秀

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

铜币
205
发表于 2022-7-6 08:13:23 | 显示全部楼层
我有一些画,我喜欢快速访问,我想一个列表,我可以键入一个昵称将是最简单的,而不是使用打开框打开它
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:14:26 | 显示全部楼层
FWIW-我将其用于许多常用的打开参考图纸。也可以在工具栏/功能区按钮宏中使用。
 
  1. (defun _OpenDwg  (dwg readOnly / f oDwg)
  2. [color=green];; RenderMan, CADTutor.net
  3. ;; Example: (_OpenDwg "[/color][color=red]FilePath[/color][color=green]\\[/color][color=blue]FileName[/color][color=green].dwg" T)[/color]
  4. (vl-load-com)  
  5. (if (and (setq f (findfile dwg)) (/= 1 (getvar 'sdi)))
  6.    (vla-activate
  7.      (vla-open (vla-get-documents (vlax-get-acad-object))
  8.                f
  9.                (cond ((= T readOnly) :vlax-true)
  10.                      ((:vlax-false)))))
  11.    (cond (f (prompt "\n** Command not available in SDI mode ** "))
  12.          ((prompt (strcat "\n** ""
  13.                           (strcase (vl-filename-base dwg))
  14.                           "" cannot be found ** ")))))
  15. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:19:15 | 显示全部楼层
您可以使用它打开任何文件:
 
http://lee-mac.com/open.html
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:23:27 | 显示全部楼层
 
... FTFY公司
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:25:27 | 显示全部楼层
李-出于好奇,这段代码是如何与多个版本(以及默认场景下的整个版本)一起工作的。。。?
 
我还没有测试LM:对我自己开放,但我们已经安装了Land Desktop 2009、Raster Design 2009、Civil 3D 2011、Map 3D 2011、Raster Design 2011、Civil 3D 2012、AMEP 2012和Raster Design 2012。我想知道贝壳是不是。Application InterfaceObject知道是否使用激活版本调用函数打开绘图参数。
 
干杯
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:22 , Processed in 0.500089 second(s), 83 queries .

© 2020-2025 乐筑天下

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