乐筑天下

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

[编程交流] 绘制Lisp和多Rou

[复制链接]

5

主题

8

帖子

3

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 09:18:12 | 显示全部楼层 |阅读模式
大家好!
 
你们过去帮了我很大的忙,所以我提前感谢你们接受我的问题!
 
我正在尝试编写一组LISP例程来替换绘图脚本。目前,我们有一个自定义功能区,带有“快速绘制”选项卡的按钮。这样可以节省手动打开“打印”对话框和设置每个位的时间(我们现在有页面设置,但这对没有页面设置的旧文件没有帮助)。按钮是一种快速简单的方式,可以让人快速绘图。
 
虽然这些工作很好,但问题是CutePDF产生相对较大的PDF,尤其是与2011 DWG-to-PDF打印机相比。所以2011年的家伙们想使用DWGtoPDF打印机,因为它可以生成小文件。但是,由于绘图仪是内部autocad命令,因此在使用脚本时不会出现保存对话框(如下所示)。
 
  1. ^C^Cz;e;-plot;y;;DWG To PDF.pc3;ISO A3 (420.00 x 297.00 MM);M;L;N;E;1:1;c;y;monochrome.ctb;y;N;N;N;;N;Y;

 
所以
 
我决定把它全部改成Lisp程序。(艰巨的任务,因为我不知道任何Lisp程序)。到目前为止,我的代码如下:
 
  1. (DEFUN C:WAA3LPDF ()
  2. (SETVAR "CMDECHO" 0)
  3. (COMMAND "-PLOT"
  4.    "Y"
  5.    ""
  6.    "DWG TO PDF.PC3"
  7.    "ISO EXPAND A3 (420.00 x 297.00 MM)"
  8.    "M"
  9.    "L"
  10.    "N"
  11.    "E"
  12.    "1:1"
  13.    "CEN"
  14.    "Y"
  15.    "monochrome.ctb"
  16.    "Y"
  17.    "N"
  18.    "N"
  19.    "N"
  20.    (getfiled "Save File as..."
  21.       (strcat
  22. "(getenv "username")\\desktop"
  23. (vl-filename-base(getvar "DWGNAME")
  24.    )
  25. )
  26.       "pdf"
  27.       5
  28.    )
  29.    "N"
  30.    "Y"
  31. )
  32. (SETVAR "CMDECHO" 1)
  33. (PRINC)
  34. )

 
我的两个问题是:
 
1) 我正在尝试将文件对话框的默认位置设置为桌面。我不确定getenv如何与strcat命令一起工作,但它目前工作不正常!
 
2) 目前,剧本中有5种变体:横向、A1和A3的纵向以及A3横向中的A1。我需要为这些单独的LISP吗?或者我可以将它们全部合并到所有文件中,并从一个按钮调用每个LISP吗?
 
谢谢你的时间!
 
亚当
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 09:42:58 | 显示全部楼层
Q1在这里,将文件名传递给pdf检查帖子时出现了一些问题,等待解决。
 
Q2您可以让按钮询问哪种绘图样式,然后设置变量(setq比例“1:1”),并将“1:1”替换为比例,也可以将“P”或“L”替换为(setq方向“P”)
 
类似于
(setq choose(“\ngetstring“choose A1P A3P…..”)
(条件
(=选择A1P)(setq比例“1:1”)(setq方向“P”))
(=选择A1L。。。。。。。。。。。。。。。。。。
 
“M”
朝向
“N”
“E”
规模
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:17:02 | 显示全部楼层
亚当,
 
我认为您已经做出了明智的决定,使用按钮来调用LISP例程,而不是使用宏。
 
如果将来发生更改,此选项为您(或其他人)提供了一种更简单的方法来维护代码,并允许*错误*检查等。我为用户提供的大多数工具栏按钮、菜单和功能区组件调用/执行LISP。
 
 
查看GetField LISP函数。。。我相信有一些代码可以用来创建一个新文件。此外,这为用户提供了一个以图形方式选择目标的对话框,并允许您(开发人员)指定开始位置(即用户的桌面)和文件格式(即.DWG)。
 
 
Bigal为您提供了一种选择,另一种可能是:
 
[code](initget 7“横向a1纵向a1横向a1纵向a3”)(cond(=“横向a1”(setq printLayout(getkword“\n输入所需的打印布局[横向a1/纵向a1/横向a1/纵向a3]:”);;
回复

使用道具 举报

5

主题

8

帖子

3

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 10:32:01 | 显示全部楼层
我想我明白了!将尝试这些想法。
 
谢谢大家!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 02:57 , Processed in 1.026543 second(s), 60 queries .

© 2020-2025 乐筑天下

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