コード例 #1
0
 public static EntityCtor.ProxyEntity GetEntityCtor(string blockName, KEY_ENTITY key)
 {
     return(GetBlock(blockName).GetItem(key));
 }
コード例 #2
0
            //public KEY_ENTITY GetKeyEntity(EntityCtor.ProxyEntity pEntity)
            //{
            //    KEY_ENTITY keyEntityRes;

            //    MAP_KEY_ENTITY mapKeyEntity = s_MappingKeyEntity.Find(item => (
            //        (item.m_type.Equals(pEntity.m_entity.GetType()) == true)
            //        && (item.m_command == pEntity.Command))
            //    );

            //    keyEntityRes = new KEY_ENTITY(mapKeyEntity
            //        , ((entity is Solid3d) == true) ? (entity as Solid3d).BlockName : ((entity is Entity) == true) ? (entity as Entity).BlockName : string.Empty
            //        , GetCount(entity));

            //    return keyEntityRes;
            //}

            public EntityCtor.ProxyEntity GetItem(KEY_ENTITY key)
            {
                return(m_dictEntityCtor[key]);
            }
コード例 #3
0
        /// <summary>
        /// Добавить примитив из коллекции
        /// </summary>
        /// <param name="blockName">Наименования блока - владельца прмитива</param>
        /// <param name="key">Ключ примитива из коллекции</param>
        protected void entityAdd(string blockName, KEY_ENTITY key)
        {
            Database         dbCurrent = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
            BlockTable       btCurrSpace;
            BlockTableRecord btrCurrent;
            ObjectId         oidBrecord
            , oidEntity;
            // для трансформации в исходное положение и извлесения значений параметров при создании примитива
            //Entity entityTransformCopy;

            string message = string.Format(@"Добавление примитива {0}, ИД={1}, имя={2}..."
                                           , MSExcel.GetEntityCtor(blockName, key).GetType().Name
                                           , key.Id
                                           , key.Name);

            try {
                using (Transaction trCurrent = dbCurrent.TransactionManager.StartTransaction()) {
                    // открываем таблицу блоков на запись
                    btCurrSpace = trCurrent.GetObject(dbCurrent.BlockTableId, OpenMode.ForWrite) as BlockTable;

                    if (blockName.Equals(string.Empty) == false)
                    {
                        // найти блок; при отсутствии создать
                        if (btCurrSpace.Has(blockName) == true)
                        {
                            // найден блок
                            //oidBrecord = btCurrSpace[MSExcel.s_dictEntity[key].m_BlockName];
                            btrCurrent = trCurrent.GetObject(btCurrSpace[blockName]
                                                             , OpenMode.ForWrite) as BlockTableRecord;
                        }
                        else
                        {
                            // создаем новое определение блока, задаем ему имя
                            btrCurrent      = new BlockTableRecord();
                            btrCurrent.Name = blockName;

                            // добавляем созданное определение блока в таблицу блоков, сохраняем его ID
                            //oidBrecord =
                            btCurrSpace.Add(btrCurrent);
                            // добавляем созданное определение блока в транзакцию
                            trCurrent.AddNewlyCreatedDBObject(btrCurrent, true);
                        }
                    }
                    else
                    {
                        btrCurrent = trCurrent.GetObject(dbCurrent.CurrentSpaceId
                                                         , OpenMode.ForWrite) as BlockTableRecord;
                    }

                    oidEntity = btrCurrent.AppendEntity(MSExcel.GetEntityCtor(blockName, key).m_entity);
                    trCurrent.AddNewlyCreatedDBObject(MSExcel.GetEntityCtor(blockName, key).m_entity as DBObject, true);

                    if (!(MSExcel.GetEntityCtor(blockName, key).m_ptDisplacement == Point3d.Origin))
                    {
                        MSExcel.GetEntityCtor(blockName, key).m_entity.TransformBy(
                            Matrix3d.Displacement(MSExcel.GetEntityCtor(blockName, key).m_ptDisplacement - Point3d.Origin)
                            );
                    }
                    else
                    {
                        ;
                    }

                    #region для трансформации в исходное положение и извлесения значений параметров при создании примитива
                    //if (MSExcel.s_dictEntity[key].m_entity is Solid3d)
                    //    acdictExt = ((Acad3DSolid)MSExcel.s_dictEntity[key].m_entity.AcadObject).GetExtensionDictionary();
                    //else
                    //    ;

                    //MSExcel.s_dictBlock[blockName].m_dictEntity[key].m_entity.TransformBy(Matrix3d.Rotation(1.57F, new Vector3d(0, 1, 0), Point3d.Origin));

                    //entityTransformCopy = MSExcel.s_dictBlock[blockName].m_dictEntity[key].m_entity.GetTransformedCopy(Matrix3d.PlaneToWorld(new Vector3d(0, 0, 1)));
                    #endregion

                    trCurrent.Commit();
                }

                Logging.AcEditorWriteMessage(message);
            } catch (System.Exception e) {
                Logging.AcEditorWriteException(e, message);

                Logging.ExceptionCaller(MethodBase.GetCurrentMethod(), e);
            }
        }