乐筑天下

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

基于它们的位置选择形状”;“在”内;另一个对象。

[复制链接]

2

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
13
发表于 2008-4-25 13:03:08 | 显示全部楼层 |阅读模式
嗨,朋友们,
我是一名架构研究员(不是架构师),我不知道如何编写一个小程序。在一些AutoCad的东西上,我相当有见识,但是因为我是自学的,所以我的知识中肯定会有一些漏洞,所以没有建议是太愚蠢了。
我有许多平面布置图,需要使用一个名为DepthMap的程序进行分析(这基本上是一个可视化分析程序)。这个程序可以将数据输出到一个文本文件中,我已经创建了一个awk(基于Linux的)程序,将数据转换为AutoCad脚本。运行时,该脚本在AutoCad模型的新图层上“绘制”深度图程序中的数据。每个数据点都是三维矩形的形式,其中x和y给出了x和y位置,厚度表示来自DepthMap程序的数据。每个数据点都用一种特定的算法着色——下面我给出了一个例子。
color 180
_ rectang thickness 3.18203 0,15 0.99,15.99
我倾向于有很多这样的小数据点(一般> 3万)。我想做的是能够在一个单独的层上绘制一个区域(理想情况下是一个多边形),然后创建一个AutoCad程序,自动选择该区域内的所有数据点。然后,我想将这些数据点的属性导出到Excel(谢天谢地,我知道如何导出到Excel)。
我想在单独的图层上绘制这些区域的原因是,有时我需要返回并为不同的分析选择相同的数据点,并且我需要确保每次都获得相同的数据点。此外,由于这些计划中有许多重复的、形状奇怪的房间,我希望能够一次性绘制一个多边形区域并复制/粘贴它,而不是尝试手动选择大量繁琐的数据点。
因此,简而言之:
我在图层A上有许多小矩形。
我在图层b上有由多边形定义的区域。
我想编写一个脚本,导出图层A上每个矩形的属性,这些属性落在图层b上每个多边形的界限内。
任何建议都是非常受欢迎的,即使只是引用一个可能有用的函数。谢谢,
迈克尔

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

6

主题

103

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
127
发表于 2008-4-26 06:56:34 | 显示全部楼层
试试这个,它是两年前为一个来自
意大利的家伙写的,看起来和你想解决的任务一样
  1.   (defun c:WPL        (/ Collector Color Coors Data Dz Elist En First_String Fn Fname        I P1 P3        Ptlist Rect Second_String Ss
  2.                  Thick Tmpss)
  3.     (setq dz (getvar "dimzin"))
  4.     (setvar "dimzin" 8)
  5.     (command "_zoom" "_e")
  6.     (if        (setq ss (ssget        "_X"
  7.                         (list
  8.                           (cons -4 "")
  9.                           )
  10.                         )
  11.               )
  12.       (progn
  13.         (setq i -1)
  14.         (repeat        (sslength ss)
  15.           (setq en (ssname ss (setq i (1+ i))))
  16.           (setq
  17.             ptlist (vl-remove-if
  18.                      (function not)
  19.                      (mapcar
  20.                        (function (lambda (x)
  21.                                    (if (= 10 (car x))
  22.                                      (list (car (cdr x)) (cadr (cdr x)))
  23.                                      )
  24.                                    )
  25.                                  )
  26.                        (entget en)
  27.                        )
  28.                      )
  29.             )
  30.           (setq        tmpss (ssget "_CP"
  31.                              ptlist
  32.                              (list
  33.                                (cons -4 "")
  34.                                )
  35.                              )
  36.                 )
  37.           (if tmpss
  38.             (while
  39.               (setq rect (ssname tmpss 0))
  40.                (setq collector (cons rect collector))
  41.                (ssdel rect tmpss)
  42.                )
  43.             )
  44.           )
  45.         )
  46.       (alert "No boundaries with \nthese properties")
  47.       )
  48.     (command "_zoom" "_p")
  49.     (foreach itm  collector
  50.       (setq elist (entget itm))
  51.       (setq coors (vl-remove-if
  52.                     (function not)
  53.                     (mapcar (function (lambda (x)
  54.                                         (if (equal 10 (car x))
  55.                                           (cdr x)
  56.                                           )
  57.                                         )
  58.                                       )
  59.                             elist
  60.                             )
  61.                     )
  62.             )
  63.       (setq p1 (car coors)
  64. ;;;              p2 (cadr coors)
  65.             p3 (caddr coors)
  66. ;;;              p4 (cadddr coors)
  67.             )
  68.       (setq thick (cdr (assoc 40 elist))
  69.             color (cdr (assoc 62 elist))
  70.             )
  71.       (setq first_string  (strcat "color " (itoa color))
  72.             second_string (strcat "_rectang thickness "
  73.                                   (rtos thick 2 5)
  74.                                   " "
  75.                                   (rtos (car p1) 2 2)
  76.                                   ","
  77.                                   (rtos (cadr p1) 2 2)
  78.                                   " "
  79.                                   (rtos (car p3) 2 2)
  80.                                   ","
  81.                                   (rtos (cadr p3) 2 2)
  82.                                   )
  83.             )
  84.       (setq data (cons first_string data)
  85.             data (cons second_string data))
  86.       )
  87.     (setq data (reverse data))
  88.     (setq fname        (strcat        (getstring
  89.                           "\nEnter text file name w/o extension to save data: ")
  90.                         ".txt"))
  91.     (setq fn (open (strcat (getvar "dwgprefix") fname) "w"))
  92.     (mapcar (function (lambda (x) (write-line x fn)))
  93.             data
  94.             )
  95.     (close fn)
  96.     (alert "done")
  97.     (setvar "dimzin" dz)
  98.     (princ)
  99.     )
  100. (princ "\n  >> Start command with WPL")
  101. (prin1)

~'J'~
回复

使用道具 举报

6

主题

103

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
127
发表于 2008-4-26 14:21:55 | 显示全部楼层

抱歉,Michael,我忘了这是VBA分行
试试这个代码1]
~'J'~
回复

使用道具 举报

2

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
13
发表于 2008-4-27 12:36:56 | 显示全部楼层
胖子,
谢谢,我非常感谢。我们在学期末就到了,所以批改论文等可能意味着这需要几天的时间,但这非常有帮助!
回复

使用道具 举报

6

主题

103

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
127
发表于 2008-4-27 14:49:14 | 显示全部楼层
不客气,迈克尔
祝你顺利度过这学期
~'J'~
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-4 21:55 , Processed in 1.242201 second(s), 73 queries .

© 2020-2025 乐筑天下

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