</li><li>RAL™ Classic and RAL Design 配色系统 </li><li>DIC<sup>®</sup> Color Guide </li><li>从已输入的配色系统取色。 </li></ul><div class="section"><a name="WSfacf1429558a55de8b299cffc1fb20d33477"></a><p class="section_title_h1"><a name="TOC_ENTRY__d0e34100"></a><a name="WS73099cc142f487551f9567310e4f54b960-7d74"></a>ACI 颜色</p><p><a name="WSfacf1429558a55de8b299cffc1fb20d33513"></a>ACI 颜色是 AutoCAD 中使用的标准颜色。每一种颜色用一个 ACI 编号(1 到 255 之间的整数)标识。标准颜色名称仅适用于 1 到 7 号颜色。颜色指定如下:1 红、2 黄、3 绿、4 青、5 蓝、6 洋红、7 白/黑。</p></div><div class="section"><a name="WSfacf1429558a55de8b299cffc1fb20d33478"></a><p class="section_title_h1"><a name="TOC_ENTRY__d0e34109"></a><a name="WS73099cc142f487551f9567310e4f54b960-7d73"></a>真彩色</p><p><a name="WSfacf1429558a55de8b299cffc1fb20d33514"></a>真彩色使用 24 位颜色定义来显示 1600 万种颜色。指定真彩色时,可以使用 RGB 或 HSL 颜色模式。如果使用 RGB 颜色模式,则可以指定颜色的红、绿、蓝组合;如果使用 HSL 颜色模式,则可以指定颜色的色调、饱和度和亮度要素。</p></div><div class="section"><a name="WSfacf1429558a55de8b299cffc1fb20d33479"></a><p class="section_title_h1"><a name="TOC_ENTRY__d0e34116"></a><a name="WS73099cc142f487551f9567310e4f54b960-7d72"></a>配色系统</p><p><a name="WSfacf1429558a55de8b299cffc1fb20d33515"></a>此程序包括几个标准 Pantone 配色系统。也可以输入其他配色系统,例如 DIC 颜色指南或 RAL 颜色集。输入用户定义的配色系统可以进一步扩充可供使用的颜色选择。 </p><div><div class="note-note">注意Pantone 为 Architectural & Interiors Cotton 和 Architectural & Interiors Paper 配色系统提供了新的颜色定义。如果您曾在 AutoCAD 2006 以前的版本中使用过这些配色系统,您会发现这些颜色发生了细微的变化。</div></div><p><a name="WSfacf1429558a55de8b299cffc1fb20d33516"></a>通过使用“选项”对话框中的“文件”选项卡,可以在系统中安装配色系统。加载配色系统后,即可从配色系统中选择颜色并将其应用到图形中的对象。 </p><p><a name="WSfacf1429558a55de8b299cffc1fb20d33517"></a>所有对象都使用当前颜色创建,该颜色显示在“特性”工具栏上的“颜色”控件中。也可以使用“颜色”控件或“选择颜色”对话框设置当前颜色。 </p><p><a name="WSfacf1429558a55de8b299cffc1fb20d33518"></a>如果当前颜色设置为“随层”,则将使用指定给当前图层的颜色来创建对象。如果不希望当前颜色成为当前图层的指定颜色,可以指定其他颜色。</p><p><a name="WSfacf1429558a55de8b299cffc1fb20d33519"></a>如果当前颜色设置为“随块”,则使用 7 号颜色(白色或黑色)来创建对象,直到将对象编组为块。将块插入到图形中时,它采用当前的颜色设置。 </p></div>
/// <summary>
/// 改方法用于向当前图形中插入块
/// </summary>
/// <param name="dwgName">图纸的名称(除去扩展名)</param>
/// <param name="point">插入点</param>
/// <param name="angle">旋转角度</param>
/// <param name="time">时间戳</param>
/// <param name="direction">所在端子排的边</param>
/// <param name="side">方向</param>
private void InsertDwg(string dwgName,Point3d point,double angle,string time,string direction,string side)
{
string dir = direction.Substring(0,5);
//刷新屏幕
if (Application.DocumentManager.Count == 0)
{
SimpleDialog.ShowWarningDialog("请先打开一个图纸文档再进行操作");
return;
}
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
string blockName = "GYCAD_TerminalBom_" + dwgName;
string dwgPath = DirConfig.SystemDwgDirectory + dwgName + ".dwg";
using (Database blockDB = new Database(false, true))
{
//读取图形文件
try
{
blockDB.ReadDwgFile(dwgPath, FileShare.Read, true, null);
}
catch
{ }
ObjectId dwgId = new ObjectId();
try
{
dwgId = db.Insert(blockName, blockDB, true);
}
catch
{
ed.WriteMessage("打开图纸错误");
return;
}
using (Transaction trans = doc.TransactionManager.StartTransaction())
{
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForWrite, false);
ObjectId blockId = dwgId;
BlockReference br = new BlockReference(point, blockId);
if (angle == 0.0)
{
if (dir == "right")
{
if (side == "dowm")
{
br.Rotation = angle;
}
else if (side == "up")
{
if (dwgName == "Triangle")
{
br.Rotation = angle + Math.PI * 3 / 2;
}
else
{
br.Rotation = angle + Math.PI;
}
}
}
else if (dir == "left_")
{
if (side == "down")
{
if (dwgName == "Triangle")
{
br.Rotation = angle + Math.PI / 2;
}
else
{
br.Rotation = angle;
}
}
else if (side == "up")
{
if (dwgName == "Triangle")
{
br.Rotation = angle + Math.PI;
}
else
{
br.Rotation = angle + Math.PI;
}
}
}
}
RegAppTable reg = (RegAppTable)trans.GetObject(db.RegAppTableId, OpenMode.ForWrite);
if (!reg.Has(blockName))
{
RegAppTableRecord app = new RegAppTableRecord();
app.Name = blockName;
reg.Add(app);
trans.AddNewlyCreatedDBObject(app, true);
}
TypedValue[] blockValues = new TypedValue[]{
new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataRegAppName),blockName),
new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),time),
new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),direction),
new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),side)
};
ResultBuffer rb = new ResultBuffer(blockValues);
try
{
br.XData = rb;
Point3d pos = br.Position;
br.Position = point;
br.Color = Color.FromColorIndex(ColorMethod.ByBlock, color.ColorIndex);
}
catch
{ }
BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt, OpenMode.ForWrite);
btr.AppendEntity(br);
trans.AddNewlyCreatedDBObject(br, true);
trans.Commit();
}
blockDB.Dispose();
}
}
上面是我向图纸中插入外部块的代码,直接 br.Color = Color.FromColorIndex(ColorMethod.ByBlock, color.ColorIndex); 是不可以的,应该在什么地方改动呢?
<p>ByBlock是用在块定义内的实体的,不是用在块参照的</p><p>仔细看看ahlzl斑竹的回帖</p>
页:
1
[2]