明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6981|回复: 11

在cad内坐标展点是用VBA好还是用LISp方便?

  [复制链接]
发表于 2004-6-7 15:45:00 | 显示全部楼层 |阅读模式
我现在想开始学习编程,正好碰到需要把许多记事本内的坐标输到cad内,我不可能用手工一个一个的输,所以想询问前辈们在cad内坐标展点是用VBA好还是用LISp方便?


还有,有没有人知道相同的过程如何在arcinfo或arcmap里面实行呢?
发表于 2004-6-7 16:01:00 | 显示全部楼层

这样展点

你那里有cass吗?你可以用cass,不用编程序,如果编程序的话,用lisp和vba都挺容易的.
 楼主| 发表于 2004-6-7 16:27:00 | 显示全部楼层
我没有cass。我的目的一个是想高效地完成工作,另外就是想学习cad的二次开发。可是我现在感觉不知如何下手好。
发表于 2004-6-7 22:28:00 | 显示全部楼层
如果你的数据需要编辑,则用VBA好;如果数据格式比较规范,则用LISP也好.因为VB比LISP处理数据的能力要强.
发表于 2004-6-8 00:35:00 | 显示全部楼层
同意楼上的看法,而且lisp也好学,兼容性好,不用总调来调去的,省了许多的麻烦事儿
发表于 2004-6-8 09:48:00 | 显示全部楼层
展点是AUTOCAD二次开发中最简单的一个了,用什么都不所谓!
发表于 2004-6-8 18:27:00 | 显示全部楼层
VBA效率高
发表于 2004-6-15 21:01:00 | 显示全部楼层
VBA速度快些!
发表于 2004-6-17 17:31:00 | 显示全部楼层
其实不会编程也可以将批量坐标输入到CAD中,你可以将你的坐标转到excel中,然后选取所有的坐标数据,执行复制,回到CAD中,在命令行中输入PLINE命令,在人求你指定点时,将光标移到命令行,用快捷菜单中粘贴功能即可。


       





-----------


树木掩映中没有发出歌声的清泉。
发表于 2004-6-22 23:57:00 | 显示全部楼层
'下列代码可能对你有用,sqh@njau.edu.cn Dim pnt4 As Double, pnt5 As Double
Dim pnt6 As Single, texthgt1 As Single
Dim str1 As String
Dim wei As Integer
Dim gcd As AcadBlockReference
Dim gcd_text As AcadText
Dim gcd_layer As AcadLayer colornum = 1
If ComboBox1.Text = "国标" Then
texthgt1 = 2# * (ThisDrawing.GetVariable("userr5"))
Else
texthgt1 = Val(ComboBox1.Text) * (ThisDrawing.GetVariable("userr5"))
End If
Set gcd_layer = ThisDrawing.Layers.Add("gcd") '设置高程层
ThisDrawing.ActiveLayer = gcd_layer '设为当前层
Set gcd_layer = Nothing wei = ComboBox2.Text
CommonDialog1.Action = 1
Dim filename1 As String
filename1 = CommonDialog1.FileName
If Trim(filename1) = "" Then Exit Sub
'Me.Hide
os_mode = ThisDrawing.GetVariable("osmode")
Call ThisDrawing.SetVariable("osmode", 0)
Open filename1 For Input As #1 Dim shpname As String
Dim shpscale As Single
shpscale = ThisDrawing.GetVariable("userr5")
shpname = "c:\acad2000\block\128.dwg"
pnt(2) = 0
Do Until EOF(1)
Input #1, pnt4, pnt4, pnt4, pnt5, pnt6
pnt1(0) = pnt4: pnt1(1) = pnt5: pnt1(2) = pnt6
pnt(0) = pnt4 + 1.5 * (ThisDrawing.GetVariable("userr5")): pnt(1) = pnt5
str1 = ThisDrawing.Utility.RealToString(pnt6, 2, wei)
If CheckBox1.Value = True Then pnt1(2) = 0 '展二维点

If zdd.OptionButton1.Value = True Then '展绘高程为0的点
''展点
Set gcd = ThisDrawing.ModelSpace.InsertBlock(pnt1, shpname, shpscale, shpscale, shpscale, 0)
gcd.Color = colornum
Set gcd = Nothing

Set gcd_text = ThisDrawing.ModelSpace.AddText(str1, pnt, texthgt1) '注记
gcd_text.Color = colornum
gcd_text.ScaleFactor = 0.8
gcd_text.StyleName = "HT"
Set gcd_text = Nothing

ElseIf (zdd.OptionButton2.Value = True And pnt6 <> 0) Then '不展绘高程为0的点
Set gcd = ThisDrawing.ModelSpace.InsertBlock(pnt1, shpname, shpscale, shpscale, shpscale, 0)
gcd.Color = colornum
Set gcd = Nothing

Set gcd_text = ThisDrawing.ModelSpace.AddText(str1, pnt, texthgt1) '注记
gcd_text.Color = colornum
gcd_text.ScaleFactor = 0.8
gcd_text.StyleName = "HT"
Set gcd_text = Nothing
zdd.Caption = "请您等候" & "...当前点高程=" & CStr(pnt6)
'ThisDrawing.Application.Update '更新数据
'ThisDrawing.Application.ZoomExtents '全窗口
End If

Loop
Close #1
Call ThisDrawing.SetVariable("osmode", os_mode)
ThisDrawing.ActiveLayer = ThisDrawing.Layers("0")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 08:19 , Processed in 0.195843 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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