Layer圖層對(duì)象

在Solidworks工程圖中,我們圖中的各類元素都會(huì)放在某個(gè)圖層中,本文就和大家一起了解下Solidworks中與圖層相關(guān)的LayerMgr圖層管理對(duì)象和Layer圖層對(duì)象。

image.png

實(shí)例1:添加圖層

本例中將給工程圖添加一個(gè)SwNew的圖層脖祈,顏色為藍(lán)色伴网。

實(shí)例代碼:

API_Learn.Learn_Layer.AddLayer(Doc, "SwNew", Colors.Blue);

public static void AddLayer(ModelDoc2 SwDoc, string Layname, Color cl)//"SwLayer"
{
     LayerMgr SwLayerMgr = SwDoc.GetLayerManager();
     Layer SwLayer = SwLayerMgr.GetLayer(Layname);
     if (SwLayer == null)
     {
          System.Windows.MessageBox.Show("無(wú)圖層【"+ Layname + "】,將新建!");
          SwLayerMgr.AddLayer(Layname, "新建描述1", GetColorRefWPF(cl), (int)swLineStyles_e.swLineCENTER, (int)swLineWeights_e.swLW_THICK3);
          SwLayer = SwLayerMgr.GetLayer(Layname);
          if (SwLayer != null)
          {
              System.Windows.MessageBox.Show("圖層新建成功!");
          }
          else
          {
              System.Windows.MessageBox.Show("圖層新建失敗!");
          }
     }
     else
     {
          System.Windows.MessageBox.Show("圖層已存在!");
     }
}

#region WPF方式顏色值轉(zhuǎn)化
public static int GetColorRefWPF(Color cl)
{
    return ((cl.R | (cl.G << 8)) | (cl.B << 0x10));
}
#endregion

運(yùn)行效果

image.png

實(shí)例分析

LayerMgr對(duì)象主要用于圖層管理戒财,如添加,刪除披诗,獲取等。

Layer對(duì)象主要代表一個(gè)圖層的實(shí)例,如新建的SwNew圖層整袁。

LayerMgr::AddLayer方法用于添加圖層,方法中的顏色參數(shù)佑吝,Solidworks使用了ColorRef值坐昙,非.Net平臺(tái)。需要進(jìn)行轉(zhuǎn)化芋忿,實(shí)例中是WPF中的轉(zhuǎn)化方式炸客,此外,如下是Winform中的轉(zhuǎn)化方式戈钢。

public static uint GetColorRefWinForm(Color cl)
{
    int nColor = cl.ToArgb();
    int blue = nColor & 255;
    int green = nColor >> 8 & 255;
    int red = nColor >> 16 & 255;
    return Convert.ToUInt32(blue << 16 | green << 8 | red);
}

實(shí)例2:圖層切換

當(dāng)我們要在某個(gè)圖層上繪制新圖形時(shí)痹仙,需要先切換到需要的圖層。

實(shí)例代碼

API_Learn.Learn_Layer.ChangeLayer(Doc, "SwNew");
public static void ChangeLayer(ModelDoc2 SwDoc, string LayerName)
{
    LayerMgr SwLayerMgr = SwDoc.GetLayerManager();
    if (SwLayerMgr.GetCurrentLayer() != LayerName)
    {
        string[] laynames = SwLayerMgr.GetLayerList();
        if (laynames.Contains(LayerName))//說(shuō)明訊在需要的圖層
        {
            SwLayerMgr.SetCurrentLayer(LayerName);
            System.Windows.MessageBox.Show("圖層【" + LayerName + "】切換成功");
        }
        else
        {
            System.Windows.MessageBox.Show("圖層【" + LayerName + "】不存在!");
        }
    }
    else
    {
         System.Windows.MessageBox.Show("當(dāng)前圖層已經(jīng)是【" + LayerName + "】");
    }
 }

運(yùn)行效果

image.png

實(shí)例3:獲取圖層元素

我們可以通過(guò)Layer::GetItems方法逆趣,獲得屬于該圖層中的各類元素蝶溶。進(jìn)而對(duì)各類工程圖元素進(jìn)行深一步的操作。

實(shí)例代碼

API_Learn.Learn_Layer.GetItemsForLayer(Doc, "圖層元素");
public static void GetItemsForLayer(ModelDoc2 SwDoc, string LayerName)
{
    LayerMgr SwLayerMgr = SwDoc.GetLayerManager();
    Layer SwLayer = SwLayerMgr.GetLayer(LayerName);
    StringBuilder Sb = new StringBuilder("");
    object[] ObjAnnotations = SwLayer.GetItems((int)swLayerItemsOption_e.swLayerItemsOption_Annotations);
    SwDoc.ClearSelection2(true);
    foreach (object ObjAnnotation in ObjAnnotations)
    {
         Annotation SwAnn = (Annotation)ObjAnnotation;
         swAnnotationType_e AnnTp = (swAnnotationType_e)SwAnn.GetType();
         Sb.Append("注解:" + AnnTp.ToString().Trim() + "\r\n");
         SwAnn.Select(true);
    }
    object[] ObjSketchBlocks = SwLayer.GetItems((int)swLayerItemsOption_e.swLayerItemsOption_SketchBlockInstance);
    foreach (object ObjSketchBlock in ObjSketchBlocks)
    {
         SketchBlockInstance SwSBI = (SketchBlockInstance)ObjSketchBlock;
         Sb.Append("圖塊:" + SwSBI.Name + "\r\n");
    }
    object[] ObjSketchSegments = SwLayer.GetItems((int)swLayerItemsOption_e.swLayerItemsOption_SketchSegments);
    foreach (object ObjSketchSegment in ObjSketchSegments)
    {
         SketchSegment SwSS = (SketchSegment)ObjSketchSegment;
         swSketchSegments_e SSTp = (swSketchSegments_e)SwSS.GetType();
         Sb.Append("草圖:" + SSTp.ToString().Trim() + "\r\n");
         SwSS.Select(true);
    }
    System.Windows.MessageBox.Show(Sb.ToString().Trim());
}

運(yùn)行效果

image.png

如下圖為本文的示例程序,源碼可上我的Github下載抖所。操作步驟可見文章[《公眾號(hào)源碼Github分享庫(kù)》]實(shí)例序號(hào)26

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梨州,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子田轧,更是在濱河造成了極大的恐慌暴匠,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傻粘,死亡現(xiàn)場(chǎng)離奇詭異每窖,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)弦悉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門窒典,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人稽莉,你說(shuō)我怎么就攤上這事瀑志。” “怎么了污秆?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵劈猪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我良拼,道長(zhǎng)战得,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任庸推,我火速辦了婚禮常侦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘予弧。我一直安慰自己刮吧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布掖蛤。 她就那樣靜靜地躺著杀捻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚓庭。 梳的紋絲不亂的頭發(fā)上致讥,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音器赞,去河邊找鬼垢袱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛港柜,可吹牛的內(nèi)容都是我干的请契。 我是一名探鬼主播咳榜,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼爽锥!你這毒婦竟也來(lái)了涌韩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤氯夷,失蹤者是張志新(化名)和其女友劉穎臣樱,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腮考,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雇毫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了踩蔚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棚放。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖寂纪,靈堂內(nèi)的尸體忽然破棺而出席吴,到底是詐尸還是另有隱情,我是刑警寧澤捞蛋,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站柬姚,受9級(jí)特大地震影響拟杉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜量承,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一搬设、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧撕捍,春花似錦拿穴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至狮腿,卻和暖如春腿宰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缘厢。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工吃度, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贴硫。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓椿每,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子间护,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容