lubing 发表于 2010-7-22 14:29:00

[求助]新手求助一个有关块的问题?

本帖最后由 作者 于 2010-7-24 16:44:47 编辑

我的CAD里有一个图块,请问我要如何跟据这个图块的名称来移动和旋转这个图块呢? 图块的坐标和旋转角度在软件里设定。有相关代码的朋友麻烦贴出来一下。谢谢了。类似我们更改下图中红色方框里的值一样。



lzh741206前辈的代码是可以实现旋转。但有个问题,就是这个块可不可以不用我手动选择。通过块名称来得到这个块




public static void test25()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
PromptEntityOptions opts = new PromptEntityOptions("\n请选择一个块:");
opts.SetRejectMessage("只能选择块参照");
opts.AddAllowedClass(typeof(BlockReference), false);
PromptEntityResult res = ed.GetEntity(opts);
if (res.Status != PromptStatus.OK)
return;
Database db = doc.Database;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
BlockReference bref = tr.GetObject(res.ObjectId, OpenMode.ForWrite) as BlockReference;
bref.Position += new Vector3d(10, 10, 0);
bref.Rotation += 60 * Math.PI / 180;
tr.Commit();
}
}

雪山飞狐_lzh 发表于 2010-7-22 15:57:00

<p>是插入块命令Insert的效果?</p>
<p>最近的问题提的都让人伤脑筋,完全看不懂,汗</p>

lubing 发表于 2010-7-22 16:19:00

不是,是图里面己经有一个块了。我想移动和旋转这个块,移动的坐标和放转的角度通过一个变量来指定。在C#里不知道要怎么实现,所以希望大家帮帮忙。

雪山飞狐_lzh 发表于 2010-7-22 16:41:00

<p><font face="Verdana"><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62519&amp;replyID=&amp;skin=0">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62519&amp;replyID=&amp;skin=0</a></font></p>
<p>如果只针对块</p>
<p>BlockReference.Position </p>
<p>BlockReference.Rotation </p>

lubing 发表于 2010-7-22 20:13:00

对,我只是针对块。不知道哪位能给些代码?

雪山飞狐_lzh 发表于 2010-7-23 13:57:00

你是要新建还是把现有的图块旋转?

如果是现有的

      
      public static void test25()
      {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
            PromptEntityOptions opts = new PromptEntityOptions("\n请选择一个块:");
            opts.SetRejectMessage("只能选择块参照");
            opts.AddAllowedClass(typeof(BlockReference), false);
            PromptEntityResult res = ed.GetEntity(opts);
            if (res.Status != PromptStatus.OK)
                return;
            Database db = doc.Database;
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                BlockReference bref = tr.GetObject(res.ObjectId, OpenMode.ForWrite) as BlockReference;
                bref.Position += new Vector3d(10, 10, 0);
                bref.Rotation += 60 * Math.PI / 180;
                tr.Commit();
            }
      }

lubing 发表于 2010-7-24 16:12:00

本帖最后由 作者 于 2010-7-24 16:41:22 编辑 <br /><br />
<div><span style="FILTER: glow(color='#9898BA',strength='2'); WIDTH: 105px"><font face="Verdana" color="#da2549"><b>lzh741206</b></font>前辈的代码是可以实现旋转。但有个问题,就是这个块可不可以不用我手动选择。通过块名称来得到这个块</div></span>

雪山飞狐_lzh 发表于 2010-7-24 17:19:00

<p>把你的要求说清楚</p>
<p>图块是图形里现有的吗?多个一起旋转?</p>
<p>还是新建一个块并旋转</p>

lubing 发表于 2010-7-24 18:31:00

图块是图形里现有的。只有一个。上面给出的代码是可以用。但需要选择那个图块之后才能旋转。我的目地是不需要选择择它就可以旋转。

雪山飞狐_lzh 发表于 2010-7-24 22:28:00

<p>建议你自己先试着写下,先看看kean专题的选择集部分,以及置顶帖手册的选择集部分</p>
页: [1]
查看完整版本: [求助]新手求助一个有关块的问题?