乐筑天下

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

[编程交流] 萨维之后的维尔德绘图状态

[复制链接]

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-5 22:27:39 | 显示全部楼层 |阅读模式
我有一个相当简单的LISP程序,它可以自动执行我们在办公室里执行的任务。基本上,我们打开了一个旧的绘图,它包含了模型空间中的所有内容,我们在它上做了一些魔术,使它与布局选项卡和视口一起工作。到最后一切似乎都很顺利。制作PDF打印输出,并使用新名称保存图形。但是当我关闭图形,然后重新打开它时,以前的布局选项卡都被破坏了。保存文件时的视图是放大这个新的且唯一的布局选项卡的范围。但当我重新打开文件时,纸张空间一直延伸到屏幕的左侧,再加上用这段代码创建的视口也消失了。请记住,这是在LISP程序成功运行之后。
 
这第一个屏幕截图是我在LISP代码完成后立即获得的。创建了一个PDF文件,该文件显示该布局选项卡渲染得很好。但当我关闭然后重新打开绘图时,它看起来像是第二个屏幕截图:
 
这个东西使用了所有的专有块,我不能在这里发布太多。但这是代码,没有所有的块可能没用。我真的不知道出了什么问题。如果是LISP问题或视频驱动程序问题?
  1. (vl-load-com)
  2. (defun C:revpart (/ tblkpath PartNo)
  3. ; INITIALIZE -------------------------------------------------------------------
  4. (setq tblkpath (strcat "//a_long_novell_path/2014/8.5x11 - BOM.dwg")
  5. svpath (strcat "//a_long_novell_path/New Parts/")
  6. pdfpath (strcat svpath "PDF/")
  7. PartNo "000001"
  8. DwnBy "W.A."
  9. PartTitle "HANDLE\\PSTANDARD"
  10. )  
  11. (error)
  12. (initerr)
  13. (setvar "cmdecho" 0)
  14. (setvar "osmode" 0)
  15. (setvar 'CECOLOR "ByLayer")
  16. (setvar 'CELTYPE "ByLayer")
  17. ; INITIALIZE -------------------------------------------------------------------
  18. ; CREATE THE NEW LAYOUT TAB
  19. (command "._LAYOUT" "_N" "8.5x11")
  20. (setvar 'CTAB "8.5x11")
  21. (vlax-for Obj (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-Acad-Object)))
  22.    (if (= (vla-get-ObjectName Obj) "AcDbViewport")
  23.      (vla-Delete Obj)
  24.      )
  25.    )
  26. ; INSERT THE NEW TITLBLOCK IN THE NEW LAYOUT TAB
  27. (command "._INSERT" tblkpath '(0.0 0.0 0.0) "" "" "")
  28. ; NOW DELETE THE OLD LAYOUT1 TAB
  29. (command "._LAYOUT" "D" "Layout1" "")
  30. ; CREATE THE VIEWPORTS LAYER IF NEEDED - AND MOST OF THE TIME IT WILL
  31. (if (= (tblsearch "layer" "Viewports") nil)
  32.    (command ".layer" "make" "Viewports" "color" 9 "Viewports" "")
  33. )
  34. (if (/= 0 (cdr (assoc 70 (tblsearch "layer" "Viewports"))))
  35.    (command ".layer" "t" "Viewports" "")
  36. )
  37. (if (> 0 (cdr (assoc 62 (tblsearch "layer" "Viewports"))))
  38.    (command ".layer" "on" "Viewports" "")
  39. )
  40. (command "._LAYER" "_COLOR" 9 "Viewports" "_PLOT" "N" "Viewports" "")
  41. (setvar "CLAYER" "Viewports")
  42. (setvar "CECOLOR" "BYLAYER")
  43. (setvar "CELTYPE" "BYLAYER")
  44. (ax:CreateVP (vla-get-activedocument (vlax-get-acad-object)) '(5.2813 4.5781 0) 10.1875 6.4688)
  45. (command "._MSPACE")
  46. (command "._GRID" "OFF")
  47. (command "._ZOOM" "E")
  48. (command "._PSPACE")
  49. (command "._ZOOM" "E")
  50. ; FILL IN THE Title Block --------------------------------------------------------------
  51. (MDraw_Title_Blk '(9.03125 0.6875) PartTitle "Title Block" "8.5x11" 0.1 "ROMAND" 5 0)
  52. (Draw_Title_Blk '(9.75 0.3125) (today) "Title Block" "8.5x11" 0.09 "DIM" 0)
  53. (Draw_Title_Blk '(8.5 0.125) PartNo "Title Block" "8.5x11" 0.09 "DIM" 0)
  54. (Draw_Title_Blk '(7.875 0.3125) DwnBy "Title Block" "8.5x11" 0.09 "DIM" 0)
  55. (Draw_Title_Blk '(8.5 0.3125) "NTS" "Title Block" "8.5x11" 0.09 "DIM" 0)
  56. (Draw_Title_Blk '(7.875 0.125) "AEB" "Title Block" "8.5x11" 0.09 "DIM" 0)
  57. (Draw_Title_Blk '(9.1875 0.3125) "1   1" "Title Block" "8.5x11" 0.09 "DIM" 0)
  58. ;----------------------------------------------------------------------------------------
  59. (AddDwgProps)
  60. (Print2PDF)
  61. (SaveDwgFile)
  62. (princ)
  63. ); end function
  64. ;;; (ax:CreateVP (vla-get-activedocument (vlax-get-acad-object)) '(200 200 0) 150 100)
  65. (defun ax:CreateVP (ad center width height / ps ent)
  66. (setq ps (vla-get-paperspace ad))
  67. (vla-put-activespace ad acpaperspace)
  68. (vla-put-mspace ad :vlax-false)
  69. (setq        ent
  70. (vla-addpviewport
  71.    ps
  72.    (vlax-safearray-fill
  73.      (vlax-make-safearray
  74.        vlax-vbdouble
  75.        (cons 0 2)
  76.      )
  77.      center
  78.    )
  79.    width
  80.    height
  81. )
  82. )
  83. (vla-put-viewporton ent :vlax-true)
  84. (vla-display ent :vlax-true)
  85. (vla-update ent)
  86. ); ax:CreateVP function
  87. ;-----------------------------------------------------------------------------------;
  88. ; UTITLITY FUNCTIONS                                                                ;
  89. ;-----------------------------------------------------------------------------------;
  90. (defun M-Text (pt str txtclr almnt)
  91. (entmakex (list (cons 0 "MTEXT")
  92.           (cons 100 "AcDbEntity")
  93.                  (cons 100 "AcDbMText")
  94.           (cons 10 pt)
  95.           (cons 7 "DIM")
  96.           (cons 71 almnt)
  97.           (cons 62 txtclr)
  98.           (cons 1 str)))
  99. ); end function
  100. ; -------- SAVE FILE ---------------------------------------------------------------;
  101. (defun SaveDwgFile (/ _fname)
  102. (setq _fname (strcat svpath "DWG/" PartNo ".dwg"))
  103. (setvar "EXPERT" 5)
  104. (setvar "CTAB" "8.5x11")
  105. (command "._CLAYER" "0")
  106. (command "._PSPACE")
  107. (command "._ZOOM" "A")
  108. (reset)
  109. (command "._SAVEAS" "2013" _fname)
  110. (princ)
  111. ); end SaveDwgFile function
  112. ; ------------ Print2PDF -----------------------------------------------------------;
  113. (defun Print2PDF (/ _papersize)
  114. ;(setq _papersize "ansi full bleed A (8.50 x 11.00 inches)")
  115. (setvar 'CTAB "8.5x11")
  116. (command "-plot"
  117.        "Y"
  118.        ""
  119.        "DWGN To PDF"
  120.        "ansi full bleed A (8.50 x 11.00 inches)"
  121.        ""
  122.        "L"
  123.        "N"
  124.        "L"
  125.        "F"
  126.        "0.25,0.25"
  127.        "Y"
  128.        "monochrome.ctb"
  129.        "Y"
  130.        "N"
  131.        "N"
  132.        "N"
  133.        (strcat pdfpath PartNo ".pdf")
  134.        "N"
  135.        "Y")
  136. (princ)
  137. ); end Print2PDF funtcion
  138. ;-------------------------------------------------------------------------------------;
  139. ; ADD DRAWING PROPERTIES TO FILE FOR LATER USE
  140. ;-------------------------------------------------------------------------------------;
  141. (defun AddDwgProps (/ dProps dProp)
  142. (setq acadObject (vlax-get-acad-object))
  143. (setq acadDocument (vla-get-ActiveDocument acadObject))
  144. ;;Get the SummaryInfo
  145.   (setq dProps (vlax-get-Property acadDocument 'SummaryInfo))
  146.   ;;Edit the SummaryInfo properties
  147.   (vlax-put-Property dProps 'Title PartNo)
  148.   (vlax-put-Property dProps 'Subject "USF Fabrication Part Drawing")
  149.   (vlax-put-Property dProps 'Author (getvar "loginname"))   
  150.   (vlax-put-Property dProps 'LastSavedBy "PartWizard")
  151.   (vlax-put-Property dProps 'RevisionNumber "0")
  152.   (princ)
  153. ); end AddDwgProps function
  154. ;--------------------------------------------------------------------------------------;
  155. ; DRAW TITLE BLOCK TEXT
  156. ;--------------------------------------------------------------------------------------;
  157. (defun Draw_Title_Blk (pt txt lyr laysht txtsz tstyle rot)
  158. (entmake
  159.    (list
  160.     (cons 0 "TEXT")
  161.     (cons 10 pt)
  162.     (cons 40 txtsz)
  163.     (cons 8 lyr)
  164.     (cons 1 txt)
  165.     (cons 410 laysht)
  166.     (cons 7 tstyle)
  167.     (cons 50 rot)
  168.    )
  169. )
  170. ); end Draw_Titke_Blk function
  171. ;---------------------------------------------------------------------------------------;
  172. ; DRAW TITLE BLOCK MTEXT     
  173. ;---------------------------------------------------------------------------------------;
  174. (defun MDraw_Title_Blk (pt txt lyr laysht txtsz tstyle aln rot)
  175. (entmake
  176.    (list
  177.     (cons 0 "MTEXT")
  178.     (cons 100 "AcDbEntity")
  179.     (cons 100 "AcDbMText")
  180.     (cons 10 pt)
  181.     (cons 40 txtsz)
  182.     (cons 8 lyr)
  183.     (cons 1 txt)
  184.     (cons 410 laysht)
  185.     (cons 7 tstyle)
  186.     (cons 71 aln)
  187.     (cons 50 rot)
  188.    )
  189. )
  190. ); end MDraw_Title_Blk function

 
更新:我发现如果在关闭文件之前再次手动保存文件,一切都很好。但这次行动的重点是让一些Jr人员在这个平台上运行一些生产。我们有500多个这样的文件要用这个过程转换。
232747ypk9behoqqjxpbee.jpg
232751sk29d089m5pkak5p.jpg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 22:57:01 | 显示全部楼层
选中缩放A这将缩放到您可能需要的范围而不是范围。
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-5 23:02:29 | 显示全部楼层
我试过调整缩放动作。没有运气。在我关闭并重新打开它之前,这幅画看起来很好。这就是损坏发生的时候。当我重新打开刚才看起来很完美的同一个文件时,我似乎不明白为什么我在新的布局选项卡上创建的视口消失了。
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-5 23:17:08 | 显示全部楼层
好的,我似乎已经把范围缩小到了这段代码,这很冒犯:
  1. ;;;  (vlax-for Obj (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-Acad-Object)))
  2. ;;;    (if (= (vla-get-ObjectName Obj) "AcDbViewport")
  3. ;;;      (vla-Delete Obj)
  4. ;;;      )
  5. ;;;    )

这将删除创建newlayout选项卡时安装的默认视口。它被删除了,因为它的大小、位置等都不正确。。。所以我没有试着去调整它,我只是把它调整一下,然后在我需要的地方创建一个新的。当文件被保存、关闭并重新打开后,它会在布局选项卡偏离中心的情况下返回,并且它缺少由代码安装的视口。如果我把上面的代码块注释掉,然后手动做一些事情,它就会恢复正常。
 
神秘的是,只要我把文件打开,一切看起来都很好。但是,如果我关闭图形文件,然后重新打开它,新的布局选项卡将不正常,视口将消失。
回复

使用道具 举报

0

主题

172

帖子

173

银币

限制会员

铜币
-1
发表于 2022-7-5 23:30:42 | 显示全部楼层
不确定视口,这是一个奇怪的视口。
 
至于缩放问题,请尝试更改绘图例程,以便回答“将更改保存到页面设置”。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:27 , Processed in 0.596232 second(s), 65 queries .

© 2020-2025 乐筑天下

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