乐筑天下

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

[编程交流] 提取视口中显示的数据

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:10:18 | 显示全部楼层 |阅读模式
我负责建筑师的布局,每张图纸有100个房间。我在每个房间中使用动态块,直到所有房间都完成。然后,我进入paperspace layout并创建一个视口(不同的形状)在paperspace中放置属性,然后重复该过程。我试图从视口中看到的内容中提取数据。目前,当我这样做时,它会提取模型空间中的所有数据。完成后,我无法将数据室逐个分开。我很想在excel中输出1个布局到1个工作表。任何帮助或部分lisp都会有所帮助。我不会Lisp程序,但如果我能想出不同的东西,我也许能把它拼凑在一起。提前感谢
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 09:34:22 | 显示全部楼层
首先,在布局中,可以跟踪视口形状,然后从图纸空间chspace L enter,将形状复制到模型空间。
 
第二次搜索将多边形内的数据提取到excell。此外,(ssget“WP”listoffoints)或引用帮助(ssget“WP”listoffoints filterlist)filterlist可能只是块或某些块的名称。
 
第三,您还需要搜索视口边界点,以便可以自动生成多段线,然后执行步骤2
 
对不起,没有这个代码,我相信其他人会有。
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:52:16 | 显示全部楼层
这看起来是一个很好的开始。我已经找了很长时间了。我开发了块,但碰到了这堵砖墙。如果我问你写了什么,人们会理解吗。很遗憾,Lisp程序(我将不得不再次学习)谢谢你。如果你有可能帮助我的部分代码,我将不胜感激。我和一个可以分离lisp的人一起工作,我们可以从所有不同的代码中提取一些东西,以达到我们想要的目的。
 
干杯
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:25:37 | 显示全部楼层
我已经得到了很多帮助-谢谢比格尔。我发现了一个lisp例程,它只选择视口中可见的内容。有谁知道可以链接到我找到的lsip例程的任何lsip例程,以便我可以提取图纸空间中的所有内容,并选择视口,以便我可以将所有一个布局提取到=一个Excel电子表格。任何帮助都将不胜感激。提前谢谢。下面是我幸运地找到的lisp例程。
 
  1. ;;;---------------------------------------------------------------------------;
  2. ;;;
  3. ;;; vpsel.lsp
  4. ;;;
  5. ;;; By Jimmy Bergmark
  6. ;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved
  7. ;;; Website: [url="http://www.jtbworld.com"]www.jtbworld.com[/url]
  8. ;;; E-mail: [email="info@jtbworld.com"]info@jtbworld.com[/email]
  9. ;;;
  10. ;;; 2000-04-14 - First release
  11. ;;; Tested on AutoCAD 2000
  12. ;;;
  13. ;;;---------------------------------------------------------------------------;
  14. ;;;  DESCRIPTION
  15. ;;;
  16. ;;;  Select all visible objects in selected or active paperspace viewport
  17. ;;;  Works transparently when in modelspace and for polygonal viewports too
  18. ;;;  Example1: ERASE ALL R 'VPC >>> Erase all in model except what is visible
  19. ;;;  Example2: (command "erase" "all" "r" (c:vpc) "")
  20. ;;;  Example3: VPC ERASE >>> VPC is run previous the command and the objects
  21. ;;;                            are also in previous selection set
  22. ;;;
  23. ;;;  c:vpc - select all visible objects with crossing in viewport
  24. ;;;  c:vpw - select all visible objects with window in viewport
  25. ;;;---------------------------------------------------------------------------;
  26. (defun c:vpc ()
  27. (vpsel "C")
  28. )
  29. (defun c:vpw ()
  30. (vpsel "W")
  31. )
  32. (defun dxf (n ed) (cdr (assoc n ed)))
  33. (defun vpsel (typ   /     ad    ss    ent   vpno  ok    vpbl  vpur
  34.              msbl  msur  msul  mslr  ss1   pl    nlist x     n
  35.             )
  36. (vl-load-com)
  37. (setq ok t)
  38. (if (= (getvar "tilemode") 0)
  39.    (progn
  40.      (setq ad (vla-get-activedocument (vlax-get-acad-object)))
  41.      (if (= (getvar "cvport") 1)
  42.        (if (and (= (getvar "cmdactive") 0)
  43.                 (/= (setq ss (ssget ":E:S" '((0 . "VIEWPORT")))) nil)
  44.            )
  45.          (progn
  46.            (setq ent (ssname ss 0))
  47.            (setq vpno (dxf 69 (entget ent)))
  48.            (vla-Display (vla-get-activepviewport ad) :vlax-true)
  49.            (vla-put-mspace ad :vlax-true)
  50.            (setvar "cvport" vpno)
  51.          )
  52.          (progn
  53.            (setq ok nil)
  54.            (princ)
  55.          )
  56.        )
  57.        (setq ent (vlax-vla-object->ename (vla-get-activepviewport ad)))
  58.      )
  59.      (if (and ok (/= 1 (logand 1 (dxf 90 (setq ed (entget ent))))))
  60.        (progn
  61.          (if (= (vla-get-clipped (vlax-ename->vla-object ent))
  62.                 :vlax-false
  63.              )
  64.            (progn
  65.              (vla-getboundingbox
  66.                (vla-get-activepviewport ad)
  67.                'vpbl
  68.                'vpur
  69.              )
  70.              (setq msbl (trans (vlax-safearray->list vpbl) 3 2))
  71.              (setq msur (trans (vlax-safearray->list vpur) 3 2))
  72.              (setq msul (list (car msbl) (cadr msur)))
  73.              (setq mslr (list (car msur) (cadr msbl)))
  74.              (setq ss1
  75.                     (ssget (strcat typ "P") (list msbl msul msur mslr))
  76.              )
  77.            )
  78.            (progn
  79.              (setq pl (entget (dxf 340 (entget ent))))
  80.              (setq nlist nil)
  81.              (foreach x pl
  82.                (if (eq 10 (car x))
  83.                  (setq nlist (cons (trans (cdr x) 3 2) nlist))
  84.                )
  85.              )
  86.              (setq ss1 (ssget (strcat typ "P") nlist))
  87.            )
  88.          )
  89.          (sssetfirst nil ss1)
  90.          (if ss1
  91.            (setq n (sslength ss1))
  92.            (setq n 0)
  93.          )
  94.          (princ n)
  95.          (princ " found ")
  96.          (if (and ss1 (= (getvar "cmdactive") 1))
  97.            ss1
  98.            (princ)
  99.          )
  100.        )
  101.        (princ)
  102.      )
  103.    )
  104.    (princ)
  105. )
  106. )
  107. (princ)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 05:10 , Processed in 0.378329 second(s), 71 queries .

© 2020-2025 乐筑天下

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