乐筑天下

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

[编程交流] 页面设置Lisp

[复制链接]

48

主题

657

帖子

33

银币

限制会员

铜币
-1
发表于 2022-7-5 17:36:09 | 显示全部楼层 |阅读模式
你好
我想知道是否有人能帮我?
 
 
背景-我有一个客户,他要求以特定的方式将图纸与页面设置一起返回给他们,例如没有指定绘图仪等等。当我们打印支票打印等时,我们使用适用于绘图仪的设置。有时我们的设置会被保存,而不是他们的设置
 
 
因此,我正在做的是制作一个简单的LISP例程,它将根据他们的要求设置页面设置。在发送文件之前,我可以进入每个绘图,输入一个简单的命令来设置页面并关闭绘图(而不是通过页面设置框,这样可能会忘记一些东西)
 
 
希望这有意义。
 
 
因此,Lisp例程可能类似于:
 
 
(c:defun client1page setup()
 
 
.... 将绘图仪设置为无
.... 将纸张大小设置为A1
.... 将打印区域设置为范围
.... 将单位设置为mm
 
 
等等
 
 
我可以使用“u plot”方法,只需使用“no”继续绘图,但是如果没有选择绘图仪,则会出现问题-我必须添加绘图仪,设置页面,然后删除绘图仪,并再次设置因此而发生的任何更改。
 
 
 
 
我可以让大部分页面设置工作正常进行,更改绘图仪等等,目前我正在努力调整页面方向
 
 
 
 
有人知道如何通过页面设置中的LISP命令将页面方向设置为横向或纵向吗?
 
 
 
 
我希望它是一段1到2行的代码
 
 
 
 
我更愿意一次更改一个设置(可能不是最好的方法,但对m来说很好),并且不从另一个图形复制页面设置(避免复制错误)
 
 
 
 
提前感谢
回复

使用道具 举报

7

主题

708

帖子

701

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 17:44:34 | 显示全部楼层
 
这应该是另一种方式。它可以通过导入一页设置来防止错误。我已经导入了数百个页面设置,从来没有出现过错误。帮自己一个忙,在批处理过程中这样做。分批执行可以确保一致性和彻底性。有许多例程用于将页面设置导入多个文件。如果你感兴趣的话,我很确定我有一个。
回复

使用道具 举报

13

主题

64

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 17:45:08 | 显示全部楼层
 
如果可以的话,请把它贴出来。。。
回复

使用道具 举报

48

主题

657

帖子

33

银币

限制会员

铜币
-1
发表于 2022-7-5 17:49:45 | 显示全部楼层
谢谢Rob,
 
 
批量完成应该可以,但是仍然需要检查一致性,团队中没有其他人没有更改“母版”页面设置的页面设置。
 
 
是的,这是一个很好的解决方案-你是对的,有很多例子-但不完全是我在这里寻找的
回复

使用道具 举报

7

主题

708

帖子

701

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 17:55:28 | 显示全部楼层
好的,没有版权或作者信息。我可以发帖。这个很旧了,我已经好几年没用了。使用风险自负。
 
  1. ;; Copies plot configurations from the current drawing
  2. ;; to all drawings within a selected folder.
  3. (defun c:copyplotconfigs (/ _getfolder _getplotconfigs adoc dir doc file l n odbx plt v)
  4. (vl-load-com)
  5. (defun _getfolder (message / sh folder result)
  6.    (setq sh (vla-getinterfaceobject (vlax-get-acad-object) "Shell.Application"))
  7.    (setq folder (vlax-invoke-method sh 'browseforfolder 0 message 0))
  8.    (vlax-release-object sh)
  9.    (if         folder
  10.      (progn (setq result (vlax-get-property (vlax-get-property folder 'self) 'path))
  11.       (if (wcmatch result "*\")
  12.         result
  13.         (strcat result "\")
  14.       )
  15.      )
  16.    )
  17. )
  18. (defun _getplotconfigs (doc / out)
  19.    (vlax-for x         (vla-get-plotconfigurations doc)
  20.      (setq out (cons (cons (strcase (vla-get-name x)) x) out))
  21.    )
  22. )
  23. (setq adoc (vla-get-activedocument (setq doc (vlax-get-acad-object))))
  24. (cond
  25.    ((not (setq l (_getplotconfigs adoc)))
  26.     (princ "\nNo plot configurations in current drawing!")
  27.    )
  28.    ((not (setq         odbx (if (< (setq v (substr (getvar 'acadver) 1 2)) "16")
  29.                 (vla-getinterfaceobject doc "ObjectDBX.AxDbDocument")
  30.                 (vla-getinterfaceobject doc (strcat "ObjectDBX.AxDbDocument." v))
  31.               )
  32.    )
  33.     )
  34.     (princ "\nObject DBX interface not created!")
  35.    )
  36.    ((if
  37.       (setq dir (_getfolder "Select directory to apply current drawing pagesetups to: "))
  38. (foreach f (vl-directory-files dir "*.dwg" 0)
  39.    (setq file (strcat dir f))
  40.    (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list odbx file)))
  41.      (princ (strcase (strcat "\nError opening: " file)))
  42.      (progn (princ (strcat "\nOpening: " file))
  43.             (setq plt (vla-get-plotconfigurations odbx))
  44.             (if (not (zerop (setq n (vla-get-count plt))))
  45.               (progn (princ (strcat "\n\t" (itoa n) " - plot configurations removed"))
  46.                      (vlax-map-collection plt 'vla-delete)
  47.               )
  48.             )
  49.             (and         (vlax-invoke adoc 'copyobjects (mapcar 'cdr l) plt nil)
  50.                  (princ (strcat "\n\t"
  51.                                 (itoa (length l))
  52.                                 " - plot configurations copied from current drawing"
  53.                         )
  54.                  )
  55.             )
  56.             (vla-saveas odbx (vla-get-name odbx))
  57.      )
  58.    )
  59. )
  60. (princ "\nBuh bye...")
  61.     )
  62.    )
  63. )
  64. (princ)
  65. )
  66. (c:copyplotconfigs)
回复

使用道具 举报

9

主题

51

帖子

42

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 17:59:42 | 显示全部楼层
它似乎不起作用
 
当lisp运行时,它似乎正在工作&该文件夹中所有图形的文件日期已更改,但打印配置仍保持与原始图形相同。
 
回复

使用道具 举报

7

主题

708

帖子

701

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 18:02:44 | 显示全部楼层
对不起,我以前是这样的。您是否创建了命名页面设置?如果是这样,它是否也驻留在其他文件中?LISP可能不会覆盖已经存在的LISP。
 
我真的没有时间做任何测试。也许在周末。如果你能让它工作或找到其他解决方案,请告诉我。
回复

使用道具 举报

9

主题

51

帖子

42

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 18:08:31 | 显示全部楼层
 
早期测试dwg具有相同的多页设置。
 
我刚用一幅新画测试过。因此,它基本上是将所有多页设置转移到该文件夹中的图形中。它没有设置页面设置。
 
是这样吗?我认为lisp将有助于在另一个dwg“setted”页面设置的基础上设置页面设置?
 
 
编辑
 
我注意到了
 
回复

使用道具 举报

7

主题

708

帖子

701

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 18:13:00 | 显示全部楼层
这听起来确实很熟悉。您可能需要另一个LISP来使页面设置成为当前设置。
 
IMHO,一个客户要求在你编辑的文件上设置一个页面,这要求太高了,除非你在合同中承诺。收到文件时,其页面设置是否命名?如果没有,请命名它并保存一个文件,以便您可以导入它。这样你就不会犯错误了。
 
在这里大声思考:编写导入代码并将命名页面设置为当前状态应该相当容易。这可能与save命令结合使用。批处理部分,我不太确定。
回复

使用道具 举报

48

主题

657

帖子

33

银币

限制会员

铜币
-1
发表于 2022-7-5 18:16:21 | 显示全部楼层
我明白你的意思,也明白你在说什么。
 
 
把一个页面设置正确,正确无误,把这个设置复制到其他页面上,它们都应该正确无误。可以使用LISP例程来实现这一点,为每个客户机和项目更改其中的一些细节,例如良好页面设置的源文件和每个项目的关闭。网上有很多这样做的例子。
 
 
当然,我们都知道客户发送的内容并不总是他们想要返回的正确格式。他们不会抱怨发送的内容,但会抱怨返回的内容,在这里每次绘制30秒可以节省一周与文档控制器的争论。假设他们的文件是好的是不值得的。
 
 
 
 
无论如何,感谢到目前为止,我理解你的喜好,在一个理想的世界里,没有人改变母版图纸页面设置,它会工作得很好,谢谢你为我指明了方向。
 
 
 
 
 
 
 
 
 
 
我现在感兴趣的是,是否可以在LISP例程中使用一行或2行,将页面设置设置为横向或纵向,而不必复制另一个图形页面设置或使用_plot方法设置页面
 
 
干杯
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-4 13:51 , Processed in 1.036958 second(s), 72 queries .

© 2020-2025 乐筑天下

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