Код ниже, так что с выбранным объектом в рисунке, а затем превращают в твердый блок, и затем вставляется в фиг.
JS код следующим образом:
// создать экземпляр выбранного набора конфигурации фильтра, а класс инкапсулирует набор обработчика выбора. вар СС = mxOcx.NewSelectionSet (); // Построить отфильтрованный список вар spFilte = mxOcx.NewResbuf (); // пользователь выбирает объект , выбранный пользователем GET сущности ss.Select2 (. 8, NULL , NULL , NULL , spFilte); вар = aryId новый новый в Array (); для ( вар я = 0; I <ss.Count; I ++ ) { вар лор = ss.Item (I); IF (ENT =! нуль ) { aryId.push (ent.ObjectID); ent.Close (); } } // возвращает управление объект базы данных уаг curDatabase = mxOcx.GetDatabase (); переменная dMinX = 0, dMinY = 0, 0 = dMaxX, dMaxY = 0 ; вар isFirstEnt = истина ; для ( вар L = 0, L <aryId. длина, L ++ ) { вар PObj = curDatabase.ObjectIdToObject (aryId [L]); ЕСЛИ (PObj == NULL ) Продолжить ; вар PENT = PObj; ЕСЛИ (пент == NULL ) Продолжить ; VAR Очки =pEnt.GetBoundingBox2 (); вар minPt = points.Item (0 ); вар maxPt = points.Item (1 ); если (minPt =! нуль && maxPt! = NULL ) { если (isFirstEnt) { dMinX = minPt.x; dMinY = minPt.y; dMaxX = maxPt.x; dMaxY = maxPt.y; isFirstEnt = ложь ; } Еще { если (dMinX> minPt.x) dMinX = minPt.x; если (dMinY> minPt.y) dMinY = minPt.y; если (dMaxX < maxPt.x) dMaxX = maxPt.x; если (dMaxY < maxPt.y) dMaxY = maxPt.y; } } } Если (isFirstEnt) { // 没有实体 возврата ; } Вар поз = mxOcx.NewPoint (); pos.x = dMinX + (dMaxX - dMinX) / 2,0 ; pos.yDMinY + = (dMaxY - dMinY) / 2,0 ; // . Проверьте имя вновь созданного блока, уже существует в текущей базе данных вар blkTable = curDatabase.GetBlockTable (); уаг curSpace = curDatabase.CurrentSpace (); уаг sNewBlakName; уаг blkNewRec blkTable.Add = ( "" ); sNewBlakName = blkNewRec.Name; blkNewRec.Origin = POS; для ( вар L = 0; L <aryId.length, L ++ ) { blkNewRec.AddCloneEntity (aryId [L]); // пут до того, как объект будет удален. вар PObj = curDatabase.ObjectIdToObject (aryId [L]); ЕСЛИ(PObj == NULL ) Продолжить ; pObj.Erase (); } ЕСЛИ (blkNewRec =! Нуль ) { вар blkRef = curSpace.InsertBlock (pos.x, pos.y, sNewBlakName, 1.0, 0.0 ); вар Attrib = blkRef. AppendAttribute (); attrib.Position = POS; attrib.AlignmentPoint = POS; attrib.Oblique = 0,0 ; attrib.Rotation = 0,0 ; attrib.Height = 2,0 ; attrib.TextString = "это тест текст атрибут" ; attrib.Tag= "TestTag" ; attrib.IsInvisible = ложь ; blkRef.Position = blkRef.Position; } Возврата ;