Steven P 发表于 2022-7-5 17:36:09

页面设置Lisp

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

RobDraw 发表于 2022-7-5 17:44:34

 
这应该是另一种方式。它可以通过导入一页设置来防止错误。我已经导入了数百个页面设置,从来没有出现过错误。帮自己一个忙,在批处理过程中这样做。分批执行可以确保一致性和彻底性。有许多例程用于将页面设置导入多个文件。如果你感兴趣的话,我很确定我有一个。

CAD USER 发表于 2022-7-5 17:45:08

 
如果可以的话,请把它贴出来。。。

Steven P 发表于 2022-7-5 17:49:45

谢谢Rob,
 
 
批量完成应该可以,但是仍然需要检查一致性,团队中没有其他人没有更改“母版”页面设置的页面设置。
 
 
是的,这是一个很好的解决方案-你是对的,有很多例子-但不完全是我在这里寻找的

RobDraw 发表于 2022-7-5 17:55:28

好的,没有版权或作者信息。我可以发帖。这个很旧了,我已经好几年没用了。使用风险自负。
 
;; Copies plot configurations from the current drawing
;; to all drawings within a selected folder.
(defun c:copyplotconfigs (/ _getfolder _getplotconfigs adoc dir doc file l n odbx plt v)
(vl-load-com)
(defun _getfolder (message / sh folder result)
   (setq sh (vla-getinterfaceobject (vlax-get-acad-object) "Shell.Application"))
   (setq folder (vlax-invoke-method sh 'browseforfolder 0 message 0))
   (vlax-release-object sh)
   (if       folder
   (progn (setq result (vlax-get-property (vlax-get-property folder 'self) 'path))
      (if (wcmatch result "*\\")
      result
      (strcat result "\\")
      )
   )
   )
)
(defun _getplotconfigs (doc / out)
   (vlax-for x       (vla-get-plotconfigurations doc)
   (setq out (cons (cons (strcase (vla-get-name x)) x) out))
   )
)
(setq adoc (vla-get-activedocument (setq doc (vlax-get-acad-object))))
(cond
   ((not (setq l (_getplotconfigs adoc)))
    (princ "\nNo plot configurations in current drawing!")
   )
   ((not (setq       odbx (if (< (setq v (substr (getvar 'acadver) 1 2)) "16")
                (vla-getinterfaceobject doc "ObjectDBX.AxDbDocument")
                (vla-getinterfaceobject doc (strcat "ObjectDBX.AxDbDocument." v))
              )
   )
    )
    (princ "\nObject DBX interface not created!")
   )
   ((if
      (setq dir (_getfolder "Select directory to apply current drawing pagesetups to: "))
(foreach f (vl-directory-files dir "*.dwg" 0)
   (setq file (strcat dir f))
   (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list odbx file)))
   (princ (strcase (strcat "\nError opening: " file)))
   (progn (princ (strcat "\nOpening: " file))
          (setq plt (vla-get-plotconfigurations odbx))
          (if (not (zerop (setq n (vla-get-count plt))))
              (progn (princ (strcat "\n\t" (itoa n) " - plot configurations removed"))
                     (vlax-map-collection plt 'vla-delete)
              )
          )
          (and       (vlax-invoke adoc 'copyobjects (mapcar 'cdr l) plt nil)
               (princ (strcat "\n\t"
                                (itoa (length l))
                                " - plot configurations copied from current drawing"
                        )
               )
          )
          (vla-saveas odbx (vla-get-name odbx))
   )
   )
)
(princ "\nBuh bye...")
    )
   )
)
(princ)
)
(c:copyplotconfigs)

Tripledot 发表于 2022-7-5 17:59:42

它似乎不起作用
 
当lisp运行时,它似乎正在工作&该文件夹中所有图形的文件日期已更改,但打印配置仍保持与原始图形相同。
 

RobDraw 发表于 2022-7-5 18:02:44

对不起,我以前是这样的。您是否创建了命名页面设置?如果是这样,它是否也驻留在其他文件中?LISP可能不会覆盖已经存在的LISP。
 
我真的没有时间做任何测试。也许在周末。如果你能让它工作或找到其他解决方案,请告诉我。

Tripledot 发表于 2022-7-5 18:08:31

 
早期测试dwg具有相同的多页设置。
 
我刚用一幅新画测试过。因此,它基本上是将所有多页设置转移到该文件夹中的图形中。它没有设置页面设置。
 
是这样吗?我认为lisp将有助于在另一个dwg“setted”页面设置的基础上设置页面设置?
 
 
编辑
 
我注意到了
 

RobDraw 发表于 2022-7-5 18:13:00

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

Steven P 发表于 2022-7-5 18:16:21

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