明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3169|回复: 5

[求助]怎么得到等高线的标高?

[复制链接]
发表于 2007-8-20 18:00:00 | 显示全部楼层 |阅读模式
画一直线与等高线相交,怎么得到各相交的等高线的标高?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-8-20 18:07:00 | 显示全部楼层
vla-get-Elevation 函数

功能

   取得图案填充或多段线当前的标高。

语法及参数

(vla-get-Elevation Object)
Object MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Hatch%20对象.htm">Hatch, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/LightWeightPolyline%20对象.htm">LightWeightPolyline, MSITStore:C:/cbz242/VBA%20鍑芥暟璇存槑.chm::/Polyline%20对象.htm">Polyline
这个属性适用的对象。
Elevation双精度; 读/写
对象当前的标高。
 楼主| 发表于 2007-8-20 18:35:00 | 显示全部楼层
麻烦能不能写个示例程序?
发表于 2007-8-20 20:07:00 | 显示全部楼层
范例 

(defun Example_Elevation()

;;; 这个范例在模型空间建立一个关联式图案填充。
;;; 接着改变图案填充的标高

  (VL-LOAD-COM)

  (setq AcadObject(vlax-get-acad-object)

        AcadDocument(vla-get-ActiveDocument AcadObject)

        mSpace(vla-get-ModelSpace AcadDocument)

  )

;;; 定义图案填充

  (setq patternName "ANSI31")

  (setq patternType 0)

  (setq bAssociativity :vlax-true)

;;; 建立关联式图案填充对象

  (setq hatchObj(vla-AddHatch mSpace patternType patternName bAssociativity))

;;; 建立图案填充的外环
;;; 使用一个弧以及一个线来建立封闭环

  (setq centerpnt(vlax-make-safearray vlax-vbDouble'(0 . 2)))

  (vlax-safearray-fill centerpnt'(50 30 0))

  (setq radius 30)

  (setq startAngleInDegree 0)

  (setq endAngleInDegree 3.141592)

  (setq outerLoop1(vla-AddArc mSpace centerpnt radius startAngleInDegree endAngleInDegree))

  (setq outerLoop2(vla-AddLine mSpace (vla-get-StartPoint outerLoop1) (vla-get-EndPoint outerLoop1)))

  (setq outerLoop(vlax-make-safearray vlax-vbObject '(0 . 1)))

  (vlax-safearray-fill outerLoop ( list outerLoop1 outerLoop2))

;;; 附加第一个圆当作一个内环

  (vla-AppendOuterLoop hatchObj outerLoop)

;;; 附加第一个圆当作一个环

  (vlax-safearray-fill centerpnt'(50 45 0))

  (setq radius 10)

  (setq innerLoop10(vla-AddCircle mSpace centerpnt radius))

  (setq innerLoop1(vlax-make-safearray vlax-vbObject '(0 . 0)))

  (vlax-safearray-fill innerLoop1 ( list innerLoop10))

  (vla-AppendInnerLoop hatchObj innerLoop1)

;;; 附加第二个圆当作另一个环

  (setq radius 5)

  (setq innerLoop20(vla-AddCircle mSpace centerpnt radius))

  (setq innerLoop2(vlax-make-safearray vlax-vbObject '(0 . 0)))

  (vlax-safearray-fill innerLoop2 ( list innerLoop10))

  (vla-AppendInnerLoop hatchObj innerLoop2)

;;; 改变视口的观测方向以看清标高

  (setq NewDirection(vlax-3d-point (list -1 -1 1)))

  (setq ActiveViewportSel(vla-get-ActiveViewport AcadDocument))

  (vla-put-direction ActiveViewportSel NewDirection)

  (vla-put-ActiveViewport AcadDocument (vla-get-ActiveViewport AcadDocument))

  (vla-ZoomExtents AcadObject)

;;; 找出图案填充当前的标高

  (setq currElevation(vla-get-elevation hatchObj))

  (princ (STRCAT "当前的标高是: " (RTOS currElevation)"   Elevation范例 \n"))

  (PROMPT "<Enter>进行:")(VL-CMDF pause)

;;; 将图案填充标高设成3

  (vla-put-elevation hatchObj 3)

  (vla-Evaluate hatchObj)

  (vla-ZoomExtents AcadObject)

  (princ (STRCAT "标高当前是:"  (RTOS (vla-get-elevation hatchObj)) "   Elevation范例 \n"))

  (princ)

)

 楼主| 发表于 2007-8-20 21:22:00 | 显示全部楼层

楼主你太高估我的编程能力了

我本来是想让您给写一个提取与一直线相交的多条等高线的标高的。

发表于 2007-8-22 21:45:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-22 21:52:35 编辑

嘿嘿。。。切断面吧???

网上有已经绘制断面的程序了

我可以给个思路(很笨的办法)

1、使用SSGET将与直线相交的所有等高线选中(SSGET "F" (list pt1 pt2));其中PT1 PT2为直线两端点坐标。

2、循环读取等高线的高程值。将直线原地复制到相应的高程,并求出复制的直线与该等高线的交点。

3、删除所有复制的直线。

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-8-4 04:31 , Processed in 0.175228 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表