特定のレイヤーのポリラインをすべて選択し、通常のautocad _JOINコマンドで結合しようとしています。何らかの理由で私はちょうどそれを働かせることを傾ける。C#でAutoCADでポリラインに結合
selectionsetが適切にそれをループ私ができるとして発見され、ポリラインの色を変更された(単にテスト目的のためにやったこと)
私はここで間違っている/何をしないのですか?
doc.SendStringToExecute("._JOIN\n_p\n\n", true, false, false);
私はそれに100%満足していないが、まあ、それはです:
[CommandMethod("JOINPOLY",
CommandFlags.UsePickSet |
CommandFlags.Redraw |
CommandFlags.Modal)]
public void SelectAllPolylineByLayer()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
try
{
// create the typevalue (criteria what should be selected)
TypedValue[] tvs = new TypedValue[] {
new TypedValue(Convert.ToInt32(DxfCode.Operator), "<and"),
new TypedValue(Convert.ToInt32(DxfCode.LayerName), "Test unlocked"),
new TypedValue(Convert.ToInt32(DxfCode.Operator), "<or"),
new TypedValue(Convert.ToInt32(DxfCode.Start), "POLYLINE"),
new TypedValue(Convert.ToInt32(DxfCode.Start), "LWPOLYLINE"),
new TypedValue(Convert.ToInt32(DxfCode.Start), "POLYLINE2D"),
new TypedValue(Convert.ToInt32(DxfCode.Start), "POLYLINE3d"),
new TypedValue(Convert.ToInt32(DxfCode.Operator), "or>"),
new TypedValue(Convert.ToInt32(DxfCode.Operator), "and>")
};
// create a selectionfilter out of our created typevalue
SelectionFilter oSf = new SelectionFilter(tvs);
PromptSelectionResult selRes = ed.SelectAll(oSf);
// if there is a problemw ith the promtselection stop here
if (selRes.Status != PromptStatus.OK)
{
ed.WriteMessage("\nError in getting the selectAll");
return;
}
SelectionSet ss = selRes.Value;
ed.Command("_JOIN", ss, "");
tr.Commit();
}
//Catch the error and write the errormessage
catch (System.Exception ex)
{
ed.WriteMessage(Convert.ToString(ex));
}
}
}
私は薄い に見て私に良い点を与えますkは私の問題を少し誤解しました.3dポリラインと2dを結合したくありません。私はちょうど他の3Dポリスとすべての3Dポリスに参加し、他の2Dポリスとすべて2Dに参加したい。 – Smir
この目的のために、専用のルーチンを購入することを検討しましたか? 2Dおよび3Dポリラインの複数の結合を行うために購入できるこのルーチンがあるウェブサイトを知っています。ホイールを再発明する必要がありません。 –