明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2612|回复: 7

如何把它转换成VBA代码,请各位指点

[复制链接]
发表于 2005-7-1 16:51:00 | 显示全部楼层 |阅读模式
<BR>(defun c:mj()                         ;标注面积<BR>(setq p (getpoint "请输入标注点位:"))<BR>(command "bpoly" p "")<BR>(command "area" "o" (entlast))<BR>(setq mj (getvar "area"))<BR>(command "erase" (entlast) "")<BR>(setq smj (rtos mj 2 3))<BR>(command "layer" "set" "面积" ""         (command "text" p "1" "0" smj))<BR>)
 楼主| 发表于 2005-7-3 09:40:00 | 显示全部楼层


作者:efan2000 2004-1-3 17:01:54)


  
呵呵,这个也可以求面积。在封闭区域内选择一点,然后生成它的边界,这个边界就是封闭的多段线,直接使用它的属性就行了。
  1. Sub  test()
  2.         
  3.         '  当前图纸的实体数目
  4.         Dim  n  As  Long
  5.         n  =  ThisDrawing.ModelSpace.Count
  6.         
  7.         '  调用BOUNDARY命令获取某一点处的边界
  8.         Dim  Pt  As  Variant
  9.         Pt  =  ThisDrawing.Utility.GetPoint(,  "指定内部点:  ")
  10.         ThisDrawing.SendCommand  "_-Boundary"  &  vbCr  &  Pt(0)  &  ","  &  Pt(1)  &  vbCr  &  vbCr
  11.         
  12.         '  如果存在边界,则会生成新的实体
  13.         Dim  lwpLineObj  As  AcadLWPolyline
  14.         If  ThisDrawing.ModelSpace.Count  >  n  Then
  15.                 Set  lwpLineObj  =  ThisDrawing.ModelSpace.Item(ThisDrawing.ModelSpace.Count  -  1)
  16.                 MsgBox  lwpLineObj.Area
  17.                 lwpLineObj.Delete
  18.         Else
  19.                 MsgBox  "未发现有效的边界。"
  20.         End  If
  21. End  Sub
  好程序,我在这里找到了。基本差不多,就差一个标注了,我在加上就OK了Set txtobj = ThisDrawing.ModelSpace.AddText(mj1, Pt, 1.5)
  
 楼主| 发表于 2005-7-3 09:41:00 | 显示全部楼层
这里高手好多啊。
发表于 2005-8-26 16:01:00 | 显示全部楼层
高,实在是高
发表于 2005-12-17 16:33:00 | 显示全部楼层

二楼老大,为什么会出现类型不匹配的错误?

发表于 2006-1-13 20:22:00 | 显示全部楼层

'给efan2000 2004-1-3 17:01:54)的程序稍微修改一下,效果更佳

Sub mj() '计算闭合实体面积的小程序
   
    ' 当前图纸的实体数目
    Dim n As Long
    Dim txtobj As AcadText
    Dim ss As String
   
    n = ThisDrawing.ModelSpace.Count
   
    ' 调用BOUNDARY命令获取某一点处的边界
    Dim Pt As Variant
    Pt = ThisDrawing.Utility.GetPoint(, "指定内部点: ")
    ThisDrawing.SendCommand "_-Boundary" & vbCr & Pt(0) & "," & Pt(1) & vbCr & vbCr
   
    ' 如果存在边界,则会生成新的实体
    Dim lwpLineObj As AcadLWPolyline
    If ThisDrawing.ModelSpace.Count > n Then
        Set lwpLineObj = ThisDrawing.ModelSpace.Item(ThisDrawing.ModelSpace.Count - 1)
      
        ss = "面积=" & lwpLineObj.Area & "(平方米)"
         MsgBox ss
         Set txtobj = ThisDrawing.ModelSpace.AddText(ss, Pt, 1.5)
        lwpLineObj.Delete
    Else
        MsgBox "未发现有效的边界。"
    End If
   
  

End Sub

发表于 2007-9-6 16:39:00 | 显示全部楼层

兄弟,你可是救我于水火啊,今天正在想办法解决边界生成后获取面积的问题呢!小弟万分感谢啊!

发表于 2007-9-6 16:51:00 | 显示全部楼层

有些错误,ThisDrawing.SendCommand "_-Boundary" & vbCr & Pt(0) & "," & Pt(1) & vbCr & vbCr
这一句,sendcommand方法在调用的时候不像VLISP的command可以直接调用点坐标,sendcommand需要事先转换为vlisp点坐标,

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

本版积分规则

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

GMT+8, 2025-2-27 23:26 , Processed in 0.179651 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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