在revit二開工作中,基礎演算法很重要,例如有同學問,怎麼用圓弧上的點分割圓弧,這是基本演算法,根據圓弧上的點與圓弧中心和起點構成的角度依次排序,並生成新的圓弧線 刪除舊的圓弧線即可。
實現效果如下
**如下:
[
transaction
(transactionmode.manual)
]class
cmd_splictarc
:iexternalcommand
catch
}var arc =
(arcline.
location
as locationcurve)
.curve
as arc;
var arccenter = arc.center;
var arcradius = arc.radius;
//排除不在弧上點
points = points.
where
(m =
> m.
distanceto
(arccenter)
- arcradius <
1e-3).
tolist()
;var arcstartpo = arc.
getendpoint(0
);var arcendpo = arc.
getendpoint(1
);var arcnorm = arc.normal;
//將圓弧起始點加入列表
points.
add(arcstartpo)
; points.
add(arcendpo)
;var poanpairlist =
newlist
<
poanglepair
>()
;"共有點數:"+points.count.tostring());
foreach
(var point in points)
//排序 點角度對排序
poanpairlist = poanpairlist.
orderby
(m =
>).
tolist()
;var arclist =
newlist
<
arc>()
;for
(int i =
1; i < poanpairlist.count; i++
) doc.
invoke
(m =
>
doc.
delete
(arcline.id);}
,"分割圓弧線");
return result.succeeded;}}
public
class
poanglepair
public
arc originalarc;
public
xyz point;
public
double
angle()
}
更多revit二開知識盡在唐僧課堂!
初識revit二開
把對應的dll和addin拷貝到c programdata autodesk revit addins 2017即可。2.以類庫形式編寫程式 c windows 類庫 新增兩個引用revitapi.dll和revitapiui.dll,在revit安裝路徑下 以下是我電腦中位置 e revit201...
Revit二開 Schemachema擴充套件資料
一.什麼是schema 二.schema架構 建立revit擴充套件資料第一步是建立schema 類似建立架構設計,設計schema儲存結構,類似設計db 資料表結構 第二步是將擴充套件資料放入entity,最終儲存的位置在element。三.schemamaager public class sc...
Revit二開 剪下專題之二
revit二次開發課程 在revit的開發過程中用到的剪下有很多種,例如,牆和梁的剪下,洞口和牆的剪下,空心族的剪下等等,每種剪下採用的方法並不一樣。本例詳解空心剪下 instancevoidcututils remark utilities for cutting elements by unat...