乐筑天下

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

[编程交流] lisp用于自动设置vie

[复制链接]

26

主题

89

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 16:59:42 | 显示全部楼层 |阅读模式
大家好。。我需要一些帮助。
在我的项目中要创建许多布局(超过80个布局)。
调整每个布局需要很多时间。
我希望lisp或cuix文件放置一个带有参考号的矩形块(该块未显示在绘图中)。在模型空间中放置带编号的矩形块时,(块和覆盖区域),该块将自动与各自的布局相匹配(如示例.dwg所示)
如果可能的话,请有人帮帮我。
我附上了样品。此处为dwg文件。
样品图纸
 
提前谢谢。
 
当做
Dinesh P
回复

使用道具 举报

26

主题

210

帖子

184

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 17:08:08 | 显示全部楼层
试试这个。
这是作者链接
  1. (defun c:NV (/ *error* _RestoreView p1 p2 doc ct vs vc tmp mp sc ll sl res vpdoc vpp vp ans)
  2. (defun *error* (Msg)
  3.    (princ "Error: ")
  4.    (princ Msg)
  5.    (if ct (_RestoreView))
  6.    (princ)
  7. )
  8. (defun _RestoreView ()
  9.    (setvar "ctab" ct)
  10.    (vla-ZoomCenter (vlax-Get-Acad-Object) (vlax-3d-Point (trans vc 1 0)) vs)
  11. )
  12. (vl-load-com)
  13. (if (/= (getvar "cvport") 1)
  14.    (if
  15.      (and
  16.        (setq p1 (getpoint "\nSelect first point of view: "))
  17.        (setq p2 (getcorner p1 "\nSelect second point of view: "))
  18.      )
  19.      (progn
  20.        (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))
  21.              ct (getvar "ctab")
  22.              vs (getvar "viewsize")
  23.              vc (getvar "viewctr")
  24.              sc (cond
  25.                   ( (getint
  26.                       (strcat
  27.                         "\nWhat is Viewport Scale 1: <"
  28.                         (itoa (setq sc (cond (sc) (50))))
  29.                         ">: "
  30.                       )
  31.                     )
  32.                   )
  33.                   ( sc )
  34.                 )
  35.        )
  36.        (setq ll
  37.          (vlax-for % (vla-get-layouts doc)
  38.            (setq res
  39.              (cons
  40.                (list
  41.                  (vla-get-name %)
  42.                  %
  43.                  (vla-get-TabOrder %)
  44.                )
  45.                res
  46.              )
  47.            )
  48.          )
  49.        )
  50.        (setq ll
  51.          (cdr
  52.            (vl-sort ll
  53.             '(lambda (a b)
  54.                (< (last a) (last b))
  55.              )
  56.            )
  57.          )
  58.        )
  59.        (if (setq sl (cd:DCL_StdListDialog (mapcar ' car ll) 0 "NewViewport" "Select layout:" 40 15 2 nil T T))
  60.          (progn
  61.            (setvar "ctab" (car (nth sl ll)))
  62.            (vla-put-MSpace doc :vlax-false)
  63.            (if (setq vpp (getpoint "\nSelect Point for Viewport: "))
  64.              (progn
  65.                (if
  66.                  (<
  67.                    (car (trans p2 1 0))
  68.                    (car (trans p1 1 0))
  69.                  )
  70.                  (setq tmp p1 p1 p2 p2 tmp)
  71.                )
  72.                (setq mp
  73.                  (list
  74.                     (/ (+ (car p1) (car p2)) 2)
  75.                     (/ (+ (cadr p1) (cadr p2)) 2)
  76.                     0.0
  77.                  )
  78.                )
  79.                (setq vpdoc (vla-get-PaperSpace doc)
  80.                      vp (vla-AddPViewport
  81.                           vpdoc
  82.                           (vlax-3d-point vpp)
  83.                           (/ (- (car p2) (car p1)) sc)
  84.                           (/ (- (cadr p2) (cadr p1)) sc)
  85.                         )
  86.                )
  87.                (vla-display vp :vlax-true)
  88.                (vla-put-MSpace doc :vlax-true)
  89.                (vla-put-ActivePViewport doc vp)
  90.                (vla-ZoomCenter
  91.                  (vlax-get-acad-object)
  92.                  (vlax-3d-point mp)
  93.                  1.0
  94.                )
  95.                (vla-put-CustomScale vp (/ 1. sc))
  96.                (vla-put-MSpace doc :vlax-false)
  97.                (vla-put-DisplayLocked vp :vlax-true)
  98.                (initget "Yes No")
  99.                (setq ans
  100.                  (cond
  101.                    ( (getkword "\nBack to model space [Yes/No] <No>: ") )
  102.                    ( "No" )
  103.                  )
  104.                )
  105.                (if (= ans "Yes") (_RestoreView))
  106.              )
  107.              (progn
  108.                (princ "\n** Invalid Point ** ")
  109.                (if ct (_RestoreView))
  110.              )
  111.            )
  112.          )
  113.          (princ "\n** Layout not selected ** ")
  114.        )
  115.      )
  116.      (princ "\n** Invalid Point ** ")
  117.    )
  118.    (princ "\nStart Program in Model Space ")
  119. )
  120. (princ)
  121. )
  122. ; =========================================================================================== ;
  123. ; Okno dialogowe z lista (list_box) / Dialog control with list (list_box)                     ;
  124. ;  Data      
  125. [list]    - lista do wyswietlenia / list to display                              ;
  126. ;  Pos       [iNT]     - pozycja poczatkowa na liscie / select list position                  ;
  127. ;  Title     [sTR/nil] - tytul okna / window title                                            ;
  128. ;  ListTitle [sTR/nil] - tytul list_box / list_box title                                      ;
  129. ;  Width     [iNT]     - szerokosc / width                                                    ;
  130. ;  Height    [iNT]     - wysokosc / height                                                    ;
  131. ;  Btns      [0/1/2]   - [cancel/ok/ok_cancel] przyciski / buttons                            ;
  132. ;  MSelect   [T/nil]   - dopuszczenie multiple_select / allow multiple select                 ;
  133. ;  DPos      [T/nil]   - zapamietanie pozycji okna / save window position                     ;
  134. ;  DblClick  [T/nil]   - podwojny klik (wykluczone Cancel) / double click (not for Cancel)    ;
  135. ; ------------------------------------------------------------------------------------------- ;
  136. ; Zwraca / Return:                                                                            ;
  137. ;  nil  = nic nie wybrano (anulowano) / nothing was selected (canceled)                       ;
  138. ;  INT  = wybrano jedna pozycje / one position selected  | MSelect = nil                      ;
  139. ;  LIST = wybrano kilka pozycji / few positions selected | MSelect = T                        ;
  140. ; ------------------------------------------------------------------------------------------- ;
  141. ; (cd:DCL_StdListDialog '("A" "B" "C") 0 "Title" "ListTitle:" 40 15 2 nil T nil)              ;
  142. ; =========================================================================================== ;
  143. (defun cd:DCL_StdListDialog (Data Pos Title ListTitle Width Height Btns MSelect DPos DblClk
  144.                             / f tmp dc res)
  145. (if (not DPos) (setq *cd-TempDlgPosition* (list -1 -1)))
  146. (cond
  147.    ( (not
  148.        (and
  149.          (setq f
  150.            (open
  151.              (setq tmp (vl-FileName-MkTemp nil nil ".dcl"))
  152.              "w"
  153.            )
  154.          )
  155.          (foreach %
  156.            (list
  157.              "StdListDialog:dialog{"
  158.              (strcat "label=""
  159.                (if Title (strcat Title "";") """;")
  160.              )
  161.              ":list_box{key="list";"
  162.              (if ListTitle
  163.                (strcat "label="" ListTitle "";")""
  164.              )
  165.              "fixed_width=true;fixed_height=true;"
  166.              (strcat "20" (itoa Width))";"
  167.              )
  168.              (strcat "20" (itoa Height))";"
  169.              )
  170.              (if (not DblClck)
  171.                (strcat "multiple_select="
  172.                  (if MSelect "true;" "false;")
  173.                )
  174.                "multiple_select=false;"
  175.              )
  176.              "}"
  177.              (cond
  178.                ( (zerop Btns) "cancel_button;")
  179.                ( (= 1 Btns) "ok_only;")
  180.                (T "ok_cancel;")
  181.              )
  182.              "}"
  183.            )
  184.            (write-line % f)
  185.          )
  186.          (not (close f))
  187.          (< 0 (setq dc (load_dialog tmp)))
  188.          (new_dialog "StdListDialog" dc ""
  189.            (cond
  190.              ( *cd-TempDlgPosition* )
  191.              ( (quote (-1 -1)) )
  192.            )
  193.          )
  194.        )
  195.      )
  196.    )
  197.    ( T     
  198.      (start_list "list")
  199.      (mapcar (quote add_list) Data)
  200.      (end_list)
  201.      (if (not Pos)
  202.        (setq Pos 0)
  203.        (if (> Pos (length Data)) (setq Pos 0))
  204.      )
  205.      (setq res (set_tile "list" (itoa Pos)))
  206.      (action_tile "list"
  207.        (strcat
  208.          "(setq res $value)(if DblClk (if(or(not MSelect)"
  209.          "(not (zerop Btns)))"
  210.          "(if (= $reason 4)(setq "
  211.          "*cd-TempDlgPosition* (done_dialog 1)))))"
  212.        )
  213.      )
  214.      (action_tile "accept" "(setq *cd-TempDlgPosition* (done_dialog 1))")
  215.      (action_tile "cancel" "(setq res nil) (done_dialog 0)")
  216.      (setq res
  217.        (if (= 1 (start_dialog))
  218.          (read (strcat "(" res ")"))
  219.          nil
  220.        )
  221.      )         
  222.    )
  223. )
  224. (if (< 0 dc) (unload_dialog dc))
  225. (if (setq tmp (findfile tmp)) (vl-File-Delete tmp))
  226. (if (not DPos) (setq *cd-TempDlgPosition* (list -1 -1)))
  227. (if res (if (= 1 (length res)) (car res) res))
  228. )
  229. (princ "\n Type NV to Invoke ")
  230. (princ)
回复

使用道具 举报

26

主题

89

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 17:18:44 | 显示全部楼层
你好莫斯塔法·巴德兰。。
谢谢你的回复。。
这个Lisp程序很好。。但我没想到。。我只想在模型空间中放置一个矩形,自动为各个编号的块创建布局。(例如-001矩形-->布局1002矩形-->布局2)。
你理解我的期望吗?
 
当做
Dinesh P
回复

使用道具 举报

2

主题

261

帖子

20

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-5 17:20:45 | 显示全部楼层
看看本主题的选项,有一个解决方案。
http://forum.dwg.ru/showthread.php?t=104517
 
http://forum.dwg.ru/showthread.php?t=83750
回复

使用道具 举报

26

主题

210

帖子

184

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 17:30:22 | 显示全部楼层
我不这么认为,也许另一个人能找到解决办法。
回复

使用道具 举报

26

主题

89

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 17:36:28 | 显示全部楼层
大家好。。
有人帮我。。。。。。。。。请
回复

使用道具 举报

2

主题

261

帖子

20

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-5 17:43:36 | 显示全部楼层
http://www.cadtutor.net/forum/showthread.php?98800-打印用户图纸尺寸&p=673337&viewfull=1#post673337
 
职位#24
 
见视频结尾
回复

使用道具 举报

26

主题

89

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 17:48:57 | 显示全部楼层
非常感谢马拉托维奇。。
正如我所想,这个节目很好。
我需要那个节目。。我能拿到吗?
回复

使用道具 举报

2

主题

261

帖子

20

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-5 17:54:59 | 显示全部楼层
您可以在该计划的官方网站上下载:
https://www.kdmsoft.net/revers.html
有联系人-写信给开发人员。
回复

使用道具 举报

26

主题

89

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 18:03:10 | 显示全部楼层
非常感谢马拉托维奇。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 08:55 , Processed in 0.670666 second(s), 74 queries .

© 2020-2025 乐筑天下

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