012集—二維輕量多線段LWpolyline設置凸度bulge——vba實現

? 本文主要講LightweightPolyline? ,即輕量多段線。

?ObjectARX 中提供了三種多段線的相關類:AcDbPolyline(對應vba中lightweightpolyline) 、AcDb2dPolyline (對應vba中polyline)和

AcDb3dPolyline

Polyline就是(輕量)多段線,用PEDIT命令的“擬合”選項或“樣條曲線”選項擬合成曲線后就變成Polyline2d,即二維多段線。

vba中 ,? LightweightPolyline (每一頂點用2個元素表示,數組大小必須為2的倍數)對象, 而對比polyline(每一頂點用三個元素表示,數組大小必須為3的倍數)

優化多段線(輕量多段線),由線和弧段組成的可調節寬度的二維線。

VBA 類名:

AcadLWPolyline?

創建方法:

ModelSpace.AddLightweightPolyline
PaperSpace.AddLightweightPolyline
Block.AddLightweightPolyline?

訪問途徑:

ModelSpace.Item
PaperSpace.Item
Block.Item
SelectionSet.Item
Group.Item?

要創建優化多段線,可使用 AddLightweightPolyline 方法。要編輯或查詢優化多段線,可使用以下方法和屬性:

方法

AddVertex

ArrayPolar

ArrayRectangular

Copy

Delete

Explode

GetBoundingBox

GetBulge

GetExtensionDictionary

GetWidth

GetXData

Highlight

IntersectWith

Mirror

Mirror3D

Move

Offset

Rotate

Rotate3D

ScaleEntity

SetBulge

SetWidth

SetXData

TransformBy

Update

屬性

Application

Area

Closed

ConstantWidth

Coordinate

Coordinates

Document

Elevation

Handle

HasExtensionDictionary

Hyperlinks

Layer

Length

Linetype

LinetypeGeneration

LinetypeScale

Lineweight

Normal

ObjectID

OwnerID

PlotStyleName

Thickness

TrueColor

Visible

AddLightweightPolyline 方法

由頂點列表創建優化多段線。

參閱 | 示例

語法

RetVal = object.AddLightweightPolyline(VerticesList)

Object

ModelSpace 集合, PaperSpace 集合, Block
使用該方法的對象。

VerticesList

Variant[變體] (雙精度數組)
指定多段線頂點的二維 OCS 坐標數組。至少需要兩點(四個元素)以構成優化多段線。數組大小必須為2的倍數。

RetVal

LightweightPolyline 對象
新創建的 LightweightPolyline 對象。

說明

頂點是生成多段線的線段端點。要添加弧段,首先創建全部為直線段的多段線,然后為個別需要變為弧段的線段添加凸度。要為線段添加凸度值,可使用 SetBulge 方法。

多段線的標高將被設置為布局的當前標高。使用 ElevationModelspace 或 ElevationPaperspace 屬性可確定多段線的標高。

坐標可使用 TranslateCoordinates 方法在OCS坐標與其它坐標系統相互轉換。

代碼如下:

Sub 二維輕量多段線LWpolyline設置凸度bulge()
Dim ent As AcadEntity
Dim ent1 As AcadObject
Dim pt As VariantDim points(0 To 9) As Double' 定義二維多段線頂點points(0) = 1: points(1) = 1points(2) = 1: points(3) = 2points(4) = 2: points(5) = 2points(6) = 3: points(7) = 2points(8) = 4points(9) = 4
Dim a As AcadPoint
Dim VerticesList As Variant
'VerticesList = ThisDrawing.Utility.GetPoint(, "dian")
'VerticesList1 = ThisDrawing.Utility.GetPoint(, "dian")
Set plobj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
'Set plobj = ThisDrawing.ModelSpace.AddPolyline(points)For Each ent In ThisDrawing.ModelSpaceent.SetBulge 0, 0.5NextThisDrawing.Regen acActiveViewport
Stop
End Sub

如圖,已設置好弧度?

?由下圖可知,該該線類型為多段線

為了對比,另附polyline(每一頂點用三個元素表示,數組大小必須為3的倍數)

? Polyline 對象

多段線,可調整寬度的二維線,或不可調整寬度的由線和弧段組成的三維線或網絡。

VBA 類名

AcadPolyline?

創建方法

ModelSpace.AddPolyline
PaperSpace.AddPolyline
Block.AddPolyline?

訪問途徑

ModelSpace.Item
PaperSpace.Item
Block.Item
SelectionSet.Item
Group.Item?

語法

RetVal = object.AddPolyline(VerticesList)

Object

ModelSpace 集合, PaperSpace 集合, Block
使用該方法的對象。

VerticesList

Variant[變體] (雙精度數組); 僅用于輸入
用于創建多段線頂點的OCS坐標數組。每一頂點用三個元素表示,前兩個元素為OCS的X和Y坐標;而第三個元素為忽略。至少需要兩點(六個元素)來構成一個多段線對象。該數組的大小必須為3的倍數。

RetVal

Polyline 對象
新創建的 Polyline 對象。

Sub LightWeightpolyline()
Dim ent As AcadEntity
Dim ent1 As AcadObject
Dim pt As VariantDim points(9) As Double' 定義二維多段線頂點points(0) = 100: points(1) = 1points(2) = 1: points(3) = 2points(4) = 2550: points(5) = 222points(6) = 3: points(7) = 2points(8) = 4points(9) = 400
'Dim j As Integer
'j = -1
'Dim a(0 To 2) As Variant
'Dim VerticesList As Variant
'VerticesList = ThisDrawing.Utility.GetPoint(, "dian")
'VerticesList1 = ThisDrawing.Utility.GetPoint(, "dian")
'For i = LBound(VerticesList) To UBound(VerticesList)
'j = j + 1
'ReDim Preserve points(j)
' points(j) = VerticesList(j)
'Next
'
'For i = LBound(VerticesList1) To UBound(VerticesList1)
'j = j + 1
'ReDim Preserve points(j)
' points(j) = VerticesList1(j - 3)
'NextSet plobj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)' For Each ent In ThisDrawing.ModelSpace
' ent.SetBulge 0, 0.5  lightweightpolyling不支持setbulge凸度
' NextThisDrawing.Regen acActiveViewportDim coor As Variant
coor = plobj.Coordinates
StopEnd Sub

?結論:vba中, 通過addpolyline方法創建的線的vba類名是acdb2dpolyline,cad類名是acadpolyline,cad中右鍵特性顯示為二維多線段,

而addlightweightpolyline方法創建的線的vba類名是acdbpolyline,cad類名不屬于acadpolyline,cad中右鍵特性顯示為多線段。

????????ObjectARX 中提供了三種多段線的相關類:AcDbPolyline 、AcDb2dPolyline 和

AcDb3dPolyline 。其中,利用AutoCAD 的內部命令可以創建AcDbPolyline 和AcDb3dPolyline

類的對象,用PLINE 命令創建的對象是輕量多段線(AcDbPolyline ),用3DPOLY 命令創建

的對象是三維多段線(AcDb3dPolyline )。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718396.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718396.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718396.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

藍牙BLE 5.0、5.1、5.2和5.3區別

隨著科技的不斷發展,藍牙技術也在不斷進步,其中藍牙BLE(Bluetooth Low Energy)是目前應用廣泛的一種藍牙技術,而BLE 5.0、5.1、5.2和5.3則是其不斷升級的版本。本文將對這四個版本的區別進行詳細的比較。 一、BLE 5.0…

未來趨勢:個人化資源整合將成為主流

隨著科技的發展和社會的進步,我們正步入一個高度個性化和數字化的時代,在這個時代中,資源的整合與分配模式正發生著深刻的變革。本文試圖論證,未來的資源整合將更傾向于個人化,即資源將以更加靈活、定制化的方式流向個…

【mysql技巧】如何在這個mysql語句執行前加個前提,也就是只有表里沒有相同數據才進行添加插入操作

文章目錄 我們正常的mysql插入數據語句加個前提完結 我們正常的mysql插入數據語句 INSERT INTO guild_nakadai.admin_role_permission (role_id, permission_id, type) VALUES ((SELECT id FROM guild_nakadai.admin_roles WHERE name"員工"),(SELECT id FROM guil…

Unity UGUI之Slider基本了解

在Unity中,Slider(滑動條)是一種常用的用戶界面控件之一,允許用戶通過拖動滑塊來選擇一個數值。常常應用于調節數值(如調節音量、亮度、游戲難度等)、設置選項等。 以下是Slider的基本信息和用法: 1、創建…

每日OJ題_斐波那契dp①_力扣1137. 第 N 個泰波那契數

目錄 動態規劃dp算法原理 力扣1137. 第 N 個泰波那契數 解析代碼1 解析代碼2 動態規劃dp算法原理 動態規劃(Dynamic Programming)算法的核心思想是:將大問題劃分為小問題進行解決,從而一步步獲取最優解的處理算法 動態規劃算法…

快速冪(求解原理+例題)

目錄 反復平方法(快速冪): 代碼: 例題:快速冪求逆元 作用: 快速求出 的結果。 時間復雜度: O(logk) 如果使用一般做法,從1循環到k,時間復雜度是O(k) 反復平方法&am…

低代碼流程引擎實戰:讓表單字段成為流程節點審批人的得力助手!

在現代企業的日常運營中,流程審批是保障工作高效、規范進行的關鍵環節。隨著企業對于靈活性和高效性的需求不斷增長,傳統的固定審批人設置已無法滿足多變的業務場景。在JVS低代碼中“設置流程節點審批人為表單字段”這一功能,旨在通過動態配置…

C#入門:簡單數據類型和強制類型轉換

本文由 簡悅 SimpRead 轉碼, 原文地址 mp.weixin.qq.com 本期來講講 unity 的腳本語言 —C#,C# 的簡單數據類型及范圍和強制類型轉化的方法。這可是 unity 游戲開發必備技能。 1. 簡單數據類型 各個類型的范圍: byte -> System.Byte (字節…

黑馬點評-短信登錄業務

原理 模型如下 nginx nginx基于七層模型走的事HTTP協議,可以實現基于Lua直接繞開tomcat訪問redis,也可以作為靜態資源服務器,輕松扛下上萬并發, 負載均衡到下游tomcat服務器,打散流量。 我們都知道一臺4核8G的tomca…

網絡問題排查必備利器:Pingmesh

背景 當今的數字化世界離不開無處不在的網絡連接。無論是日常生活中的社交媒體、電子商務,還是企業級應用程序和云服務,我們對網絡的依賴程度越來越高。然而,網絡的可靠性和性能往往是一個復雜的問題,尤其是在具有大規模分布式架…

21.Prometheus的查詢數據類API

平凡也就兩個字: 懶和惰; 成功也就兩個字: 苦和勤; 優秀也就兩個字: 你和我。 跟著我從0學習JAVA、spring全家桶和linux運維等知識,帶你從懵懂少年走向人生巔峰,迎娶白富美! 關注微信公眾號【 IT特靠譜 】,每天都會分享技術心得~ 1.數據查詢類API 1.1.API前綴路徑說明 …

lanqiao:42點

題解: 1.首先,把字符轉成數字。 2.創建二維數組存放枚舉的結果,第一行一個數字13;第二行4個數字,分別是13和1的加減乘除;第三行16個數字,分別是第二行的每個數和12加減乘除的結果;…

基于SpringBoot的在線拍賣系統

目錄 1、 前言介紹 2、主要技術 3、系統流程和邏輯 4、系統結構設計 5、數據庫設計表 6、運行截圖(部分) 6.1管理員功能模塊 6.2用戶功能模塊 6.3前臺首頁功能模塊 7、源碼獲取 基于SpringBoot的在線拍賣系統錄像 1、 前言介紹 隨著社會的發展,社會的各行…

安卓玩機工具推薦----ADB狀態讀寫分區 備份分區 恢復分區 查看分區號 工具操作解析

在以往玩機過程中。很多機型備份分區 備份固件需要借助adb手動指令或者第三方手機軟件或者特定的一些工具來操作。有些朋友需要查看當前機型分區名稱和對應的分區號。此類操作我前面的博文專門說過對應的adb指令。但有些界面化的工具比較方便簡單。 相關分區同類博文&#xff…

【C++】每周一題——2024.3.3(手滑再再寫一篇)

題目 Cpp 【問題描述】 求N個字符串的最長公共子串&#xff0c;2 < N&#xff1c;&#xff1d;20&#xff0c;字符串長度不超過255。 例如&#xff1a;N&#xff1d;3&#xff0c;由鍵盤依次輸入三個字符串為 What is local bus? Name some local buses. local bus is a h…

SpringBoot源碼解讀與原理分析(三十七)SpringBoot整合WebMvc(二)DispatcherServlet的工作全流程

文章目錄 前言12.4 DispatcherServlet的工作全流程12.4.1 DispatcherServlet#service12.4.2 processRequest12.4.3 doService12.4.3.1 isIncludeRequest的判斷12.4.3.2 FlashMapManager的設計 12.4.4 doDispatch12.4.4.1 處理文件上傳請求12.4.4.2 獲取可用的Handler&#xff0…

sscanf 函數的用法

sscanf 函數是 C 語言標準庫 <stdio.h> 中的一個函數&#xff0c;用于按照指定的格式從一個字符串中讀取輸入。它的用法類似于 scanf 函數&#xff0c;但是 sscanf 從字符串中讀取輸入&#xff0c;而不是從標準輸入&#xff08;鍵盤&#xff09;中讀取輸入。 以下是 ssc…

優優嗨聚集團:美團代運營服務,商家增長的新引擎

在當今數字化時代&#xff0c;線上平臺已成為商家拓展業務、提升品牌影響力的重要渠道。美團作為國內領先的本地生活服務平臺&#xff0c;擁有龐大的用戶群體和豐富的商業資源。然而&#xff0c;對于許多商家而言&#xff0c;如何在美團平臺上進行有效運營&#xff0c;實現業務…

Redis做分布式鎖如何處理超時時間?

在使用Redis實現分布式鎖時&#xff0c;處理超時時間是非常重要的&#xff0c;以確保在獲取鎖的客戶端在一定時間內未能完成任務時&#xff0c;鎖能夠自動釋放&#xff0c;避免造成死鎖或長時間的阻塞。下面是一種處理超時時間的方法&#xff1a; 獲取鎖時設置超時時間&#xf…