天正建筑软件(TArch)提供了Autolisp接口供二次开发者读取天正自定义的对象属性,如下所示:

((-1 . <图元名: 7ff4569f40d0>) (0 . "TCH_WALL") (330 . <图元名: 7ff4569f29f0>) (5 . "2BD") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "WALL") (100 . "TDbCurveEntity") (46 . 0.0) (47 . 100.0) (68 . 0) (100 . "TDbWall") (38 . 0.0) (39 . 3000.0) (300 . "NAAxADMAOQAwAC4AOQAsADUANwA3ADIAOAAuADUALAAyADIANAAyADMALgA1ACwAMgAyADQAMgAzAC4ANQAsADAALAAwACwAMQA1ADAALAAxADUAMAA=") (42 . 80.16) (148 . 0.0) (149 . 3000.0) (50 . 0.0) (73 . 1) (74 . 50) (75 . 0) (90 . 3) (76 . 0) (411 . "PUB_HATCH") (412 . "0") (413 . "0") (414 . "0") (1 . "") (2 . ""))

奇怪的是通过该接口暴露的信息,没有发现墙体位置坐标,可见通过常规组码方式行不通。笔者经过尝试后发现通过ActiveX可以提取到这一坐标,并成功将其用于天正墙体转Revit模型的翻模插件中。

(prompt "墙体导出")
  (setq ss (ssget '((0 . "*WALL"))))
  (if ss (setq l (sslength ss)) (setq l 0))
  (setq path (strcat (getvar 'DWGPREFIX) "WalToRvt.fwd"))
  (setq i 0)
  (while (< i l)
    (setq ent (ssname ss i))
    (setq obj (vlax-ename->vla-object ent))
    (setq p0 (trans (vlax-curve-getStartPoint obj) 0 1))
    (setq p1 (trans (vlax-curve-getEndPoint obj) 0 1))
    (setq rt (vlax-get-property obj "RightWidth"))
    (setq lt (vlax-get-property obj "LeftWidth"))
    (setq wt (+ lt rt))
    (setq isArc (vlax-get-property obj "IsArc"))
    (setq isExternal (vlax-get-property obj "EnUsage"))
    (setq objName (vlax-get-property obj "ObjectName"))
    (if (= objName "TDbCurtainWall")
        (setq property (strcat isExternal "-" "玻璃幕墙"))
        (setq property (strcat isExternal "-" (vlax-get-property obj "Usage") "-" (vlax-get-property obj "Style")))
    )
    (if (= isArc "直墙")
        (progn ;_ 处理直墙
          (setq dis (/ (- rt lt) 2))
          (setq x0 (- (car p0) (car p1)))
          (setq y0 (- (cadr p0) (cadr p1)))
          (setq mod (sqrt (+ (* x0 x0) (* y0 y0))))
          (if (= mod 0) (setq mod 0.000001))
          (setq x (* dis (/ (- y0) mod)))
          (setq y (* dis (/ x0 mod)))
          (setq p0 (list (+ (car p0) x) (+ (cadr p0) y)))
          (setq p1 (list (+ (car p1) x) (+ (cadr p1) y)))
          (if (> (distance p0 p1) 10)
            (setq str (strcat (rtos (car p0) 2 6) "\t" (rtos (cadr p0) 2 6) "\t" (rtos (car p1) 2 6) "\t" (rtos (cadr p1) 2 6) "\t" (rtos wt 2 0) "\t" (rtos (car p0) 2 6) "\t" (rtos (cadr p0) 2 6) "\t" property))
          )
        )
        (progn ;_ 处理弧墙
          (setq param (/ (+ (vlax-curve-getEndParam obj) (vlax-curve-getStartParam obj)) 2))
          (setq p2 (vlax-curve-getPointAtParam obj param)) ;_ 圆弧中点坐标
          (if (> (distance (vlax-curve-getEndPoint obj) (vlax-curve-getStartPoint obj)) 10)
            (setq str (strcat (rtos (car p0) 2 6) "\t" (rtos (cadr p0) 2 6) "\t" (rtos (car p1) 2 6) "\t" (rtos (cadr p1) 2 6) "\t" (rtos wt 2 0) "\t" (rtos (car p2) 2 6) "\t" (rtos (cadr p2) 2 6) "\t" property))
          )
        )
    )
    (if (= i 0) (setq f (open path "w")) (setq f (open path "a")))
    (if str (write-line str f))
    (close f)
    (setq i (1+ i))
  )
  (if (> l 0) (alert (strcat "文件位置:" path)))
  (princ)

利用Autolisp提取天正墙体位置坐标相关推荐

  1. python爬百度翻译-Python爬取百度翻译(利用json提取数据)

    本篇文章给大家带来的内容是关于Python爬取百度翻译(利用json提取数据),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 工具:Python 3.6.5.PyCharm开发工具. ...

  2. python 替换array中的值_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

  3. 利用正则表达式提取网页中Table内的数据

    利用正则表达式提取网页中Table内的数据 using System; using System.Collections.Generic; using System.Linq; using Syste ...

  4. 利用Python提取PDF文件中的文本信息

    如何利用Python提取PDF文件中的文本信息 日常工作中我们经常会用到pdf格式的文件,大多数情况下是浏览或者编辑pdf信息,但有时候需要提取pdf中的文本,如果是单个文件的话还可以通过复制粘贴来直 ...

  5. python怎么筛选excel数据_python筛选数据excel表格-如何利用python提取两个excel对比后的重复值的信息?...

    怎么用python读取excel表格的数据 import xlrd #open the .xls file xlsname="test.xls" book = xlrd.open_ ...

  6. 利用python提取视频中的字幕

    利用python提取视频中的字幕 `` 一.导包 import base64 import os import cv2 import requests import aip from aip impo ...

  7. 怎么把线稿提取出来_如何利用PS提取图片线稿?

    如何利用PS提取图片线稿?很多小伙伴们看上一张图片想提取他的线稿却不知道如何下手.下面,小编就为大家介绍下利用PS提取图片线稿方法. 打开Photoshop软件,导入准备好的图片,复制一个图层.在混合 ...

  8. lisp 非对称缓和曲线_利用AutoLISP语言绘制带缓和曲线的铁路曲线平面图

    利用 AutoLISP 语言绘制带缓和曲线的铁路曲线平面图 [ 摘要 ] 通过 AutoLISP 编程方法的剖析 , 探讨了基于 Visual LISP(VLISP) 编程软件环境下 , 利用 Aut ...

  9. 01. 利用正则表达式提取文章中的所有英文单词

    利用正则表达式提取文章中的所有英文单词 1.先创建一个Pattern对象, 模式对象,可以理解成一个正则表达式对象 Pattern pattern = Pattern.compile("[a ...

  10. 天地图如何导出某个区域_如何利用ArcGIS提取天地图建筑轮廓

    ArcGIS是一个收集.组织.管理.分析.交流和发布地理信息的综合平台,已被应用于诸多领域,建筑轮廓为建筑的外沿线投影轮廓线,这里介绍一下如何借助ArcGIS提取天地图的建筑轮廓,希望能够对大家有所帮 ...

最新文章

  1. 原生js实现发短信~chat
  2. Q+ Web 改版设计小结
  3. 蓝桥杯-最小乘积(java)
  4. 简单拨号器(Android)
  5. 企业私有云的建立—基于Ubuntu Enterprise Cloud(3)
  6. 算法题3 二分查找法
  7. vue中简单的小插曲
  8. R语言制作长三角城市群空间权重矩阵及作图显示
  9. 活动预约报名小程序已优化点与待优化点
  10. jQuery暴打灰太狼小游戏
  11. MT6573添加新硬件模块驱动方法
  12. 我的物联网大学【第13章】:王强的逆袭翻身
  13. Markdown基操
  14. Element表格数据居中
  15. tpc-c 测试方案
  16. HDMI、AV音视频端子介绍
  17. 兰吉尔FFC3 电表电能量采集终端替代方案(DLMS红外光电采集器)
  18. 互联网思维根深蒂固,新技术发展方兴未艾
  19. oracle 查看锁表 清除锁表
  20. 组件绑定事件与源生事件

热门文章

  1. 加密文档的三种基本方法
  2. 图解“华为云潮汕火锅”的“牛里乾坤”
  3. redis.clients.jedis.exceptions.JedisDataException
  4. org.apache.kafka.clients.consumer.CommitFailedException
  5. 控件库中的Botton控件简述
  6. 新赛季的中超和国安,荆棘中前行
  7. 吉林大学计算机学院林丛郁,吉林大学珠海学院201奖学金
  8. 四、数据仓库--ORACLE数据库卸数实现
  9. java itext pdf 添加页码
  10. 斜挎包长度到哪里合适_一般斜挎包长多少厘米_身高170斜挎包带长