提取视口中显示的数据
我负责建筑师的布局,每张图纸有100个房间。我在每个房间中使用动态块,直到所有房间都完成。然后,我进入paperspace layout并创建一个视口(不同的形状)在paperspace中放置属性,然后重复该过程。我试图从视口中看到的内容中提取数据。目前,当我这样做时,它会提取模型空间中的所有数据。完成后,我无法将数据室逐个分开。我很想在excel中输出1个布局到1个工作表。任何帮助或部分lisp都会有所帮助。我不会Lisp程序,但如果我能想出不同的东西,我也许能把它拼凑在一起。提前感谢 首先,在布局中,可以跟踪视口形状,然后从图纸空间chspace L enter,将形状复制到模型空间。第二次搜索将多边形内的数据提取到excell。此外,(ssget“WP”listoffoints)或引用帮助(ssget“WP”listoffoints filterlist)filterlist可能只是块或某些块的名称。
第三,您还需要搜索视口边界点,以便可以自动生成多段线,然后执行步骤2
对不起,没有这个代码,我相信其他人会有。 这看起来是一个很好的开始。我已经找了很长时间了。我开发了块,但碰到了这堵砖墙。如果我问你写了什么,人们会理解吗。很遗憾,Lisp程序(我将不得不再次学习)谢谢你。如果你有可能帮助我的部分代码,我将不胜感激。我和一个可以分离lisp的人一起工作,我们可以从所有不同的代码中提取一些东西,以达到我们想要的目的。
干杯 我已经得到了很多帮助-谢谢比格尔。我发现了一个lisp例程,它只选择视口中可见的内容。有谁知道可以链接到我找到的lsip例程的任何lsip例程,以便我可以提取图纸空间中的所有内容,并选择视口,以便我可以将所有一个布局提取到=一个Excel电子表格。任何帮助都将不胜感激。提前谢谢。下面是我幸运地找到的lisp例程。
;;;---------------------------------------------------------------------------;
;;;
;;; vpsel.lsp
;;;
;;; By Jimmy Bergmark
;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved
;;; Website: www.jtbworld.com
;;; E-mail: info@jtbworld.com
;;;
;;; 2000-04-14 - First release
;;; Tested on AutoCAD 2000
;;;
;;;---------------------------------------------------------------------------;
;;;DESCRIPTION
;;;
;;;Select all visible objects in selected or active paperspace viewport
;;;Works transparently when in modelspace and for polygonal viewports too
;;;Example1: ERASE ALL R 'VPC >>> Erase all in model except what is visible
;;;Example2: (command "erase" "all" "r" (c:vpc) "")
;;;Example3: VPC ERASE >>> VPC is run previous the command and the objects
;;; are also in previous selection set
;;;
;;;c:vpc - select all visible objects with crossing in viewport
;;;c:vpw - select all visible objects with window in viewport
;;;---------------------------------------------------------------------------;
(defun c:vpc ()
(vpsel "C")
)
(defun c:vpw ()
(vpsel "W")
)
(defun dxf (n ed) (cdr (assoc n ed)))
(defun vpsel (typ / ad ss ent vpnook vpblvpur
msblmsurmsulmslrss1 pl nlist x n
)
(vl-load-com)
(setq ok t)
(if (= (getvar "tilemode") 0)
(progn
(setq ad (vla-get-activedocument (vlax-get-acad-object)))
(if (= (getvar "cvport") 1)
(if (and (= (getvar "cmdactive") 0)
(/= (setq ss (ssget ":E:S" '((0 . "VIEWPORT")))) nil)
)
(progn
(setq ent (ssname ss 0))
(setq vpno (dxf 69 (entget ent)))
(vla-Display (vla-get-activepviewport ad) :vlax-true)
(vla-put-mspace ad :vlax-true)
(setvar "cvport" vpno)
)
(progn
(setq ok nil)
(princ)
)
)
(setq ent (vlax-vla-object->ename (vla-get-activepviewport ad)))
)
(if (and ok (/= 1 (logand 1 (dxf 90 (setq ed (entget ent))))))
(progn
(if (= (vla-get-clipped (vlax-ename->vla-object ent))
:vlax-false
)
(progn
(vla-getboundingbox
(vla-get-activepviewport ad)
'vpbl
'vpur
)
(setq msbl (trans (vlax-safearray->list vpbl) 3 2))
(setq msur (trans (vlax-safearray->list vpur) 3 2))
(setq msul (list (car msbl) (cadr msur)))
(setq mslr (list (car msur) (cadr msbl)))
(setq ss1
(ssget (strcat typ "P") (list msbl msul msur mslr))
)
)
(progn
(setq pl (entget (dxf 340 (entget ent))))
(setq nlist nil)
(foreach x pl
(if (eq 10 (car x))
(setq nlist (cons (trans (cdr x) 3 2) nlist))
)
)
(setq ss1 (ssget (strcat typ "P") nlist))
)
)
(sssetfirst nil ss1)
(if ss1
(setq n (sslength ss1))
(setq n 0)
)
(princ n)
(princ " found ")
(if (and ss1 (= (getvar "cmdactive") 1))
ss1
(princ)
)
)
(princ)
)
)
(princ)
)
)
(princ)
页:
[1]