明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 66|回复: 8

vba块添加元素,请教大佬

[复制链接]
发表于 4 小时前 | 显示全部楼层 |阅读模式
  1. Sub CreateBlockFromLines()
  2.     Dim acadDoc As AcadDocument
  3.     Dim selSet As AcadSelectionSet
  4.     Dim ent1 As AcadLine, ent2 As AcadLine
  5.     Dim blockName As String
  6.     Dim insertionPt(2) As Double

  7.    
  8.      ' 获取 AutoCAD 应用程序和文档
  9.     Set acadApp = GetObject(, "AutoCAD.Application")
  10.     Set acadDoc = acadApp.ActiveDocument
  11.     Set AcadModelSpace = acadDoc.ModelSpace
  12.    
  13.     ' 定义第一条直线的起点和终点
  14.     Dim startPoint1(0 To 2) As Double
  15.     Dim endPoint1(0 To 2) As Double
  16.     startPoint1(0) = 0: startPoint1(1) = 0: startPoint1(2) = 0
  17.     endPoint1(0) = 100: endPoint1(1) = 65: endPoint1(2) = 0
  18.    
  19.     ' 定义第二条直线的起点和终点
  20.     Dim startPoint2(0 To 2) As Double
  21.     Dim endPoint2(0 To 2) As Double
  22.     startPoint2(0) = 150: startPoint2(1) = -50: startPoint2(2) = 0
  23.     endPoint2(0) = 100: endPoint2(1) = -100: endPoint2(2) = 0
  24.    
  25.     ' 创建第一条直线
  26.     Set line1 = AcadModelSpace.AddLine(startPoint1, endPoint1)
  27.     line1.Layer = "0"
  28.     line1.color = 2  ' 黄色
  29.    
  30.     ' 创建第二条直线
  31.     Set line2 = AcadModelSpace.AddLine(startPoint2, endPoint2)
  32.     line2.Layer = "0"
  33.     line2.color = 3  ' 绿色
  34.    
  35.    
  36.    
  37.     ' 设置块名和插入点(以第一条直线的起点为插入点)
  38.     blockName = "blk-7"
  39.     insertionPt(0) = 0
  40.     insertionPt(1) = 0
  41.     insertionPt(2) = 0  ' Z轴坐标
  42.    
  43.     ' 创建块定义
  44.     Dim block As AcadBlock
  45.     Set block = acadDoc.Blocks.Add(insertionPt, blockName)
  46.    
  47.     block.AppendEntity line1
  48.     block.AppendEntity line2

  49.    
  50.     ' 刷新显示
  51.     acadDoc.Regen acActiveViewport
  52.    
  53.     MsgBox "块""" & blockName & """创建成功!", vbInformation
  54. End Sub


block.AppendEntity line1
这行报错 .AppendEntity无法识别。什么原因? 谢谢
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层
明显又拿AI臆造的代码来训练人了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2 小时前 | 显示全部楼层
请问 有懂的大佬吗?   如何块添加元素?
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层
要不换个语言,去用C#,然后看IFox.
https://gitee.com/inspirefunction/ifoxcad
回复 支持 反对

使用道具 举报

 楼主| 发表于 2 小时前 | 显示全部楼层
你有种再说一遍 发表于 2025-5-24 15:45
要不换个语言,去用C#,然后看IFox.
https://gitee.com/inspirefunction/ifoxcad

大佬威武     
多谢多谢

我是弄个上下班 电动自行车,,大佬这个50座大巴 我也开不了哈
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层
翔云95 发表于 2025-5-24 16:06
大佬威武     
多谢多谢

差不多的,顶多是你转去vb.net看API是一模一样的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2 小时前 | 显示全部楼层
vba给块添加实体,是否只能 Block.addline()  addxxx..()这种?

已经存在的实体或选择集 ,没法添加到块?
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层
翔云95 发表于 2025-5-24 16:11
vba给块添加实体,是否只能 Block.addline()  addxxx..()这种?

已经存在的实体或选择集 ,没法添加到块 ...

教程写好了,代码写好了...
这个东西不简单的,
首先你要克隆全部图元,然后基变换,然后处理属性和注释性...
如果觉得困难你就调用command得了
https://gitee.com/inspirefunctio ... Shared/TestBlock.cs
回复 支持 反对

使用道具 举报

 楼主| 发表于 1 小时前 | 显示全部楼层
你有种再说一遍 发表于 2025-5-24 16:24
教程写好了,代码写好了...
这个东西不简单的,
首先你要克隆全部图元,然后基变换,然后处理属性和注释性. ...

多谢大咖
学习一下。不知道能不能看懂
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-24 18:24 , Processed in 0.174724 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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