создание точек при помощи пользователя, затем создание окружности на точке!help!

Автор Тема: создание точек при помощи пользователя, затем создание окружности на точке!help!  (Прочитано 52266 раз)

0 Пользователей и 8 Гостей просматривают эту тему.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Это хуже чем TryGetObjectId ?
Здесь сравни время, затраченное на обработку одного и того же объёма работы. Сравнивай значения в колонках DBSearcher_TryCatch и DbBrowser. Первая из них использует GetObjectId, а вторая - TryGetObjectId.

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
Просто теряем производительность, но если взять такой маленький проект как мой, то факта потери производительности не будет. но дабы не привыкать к плохому сделаю trygetobject

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Просто теряем производительность, но если взять такой маленький проект как мой, то факта потери производительности не будет.
Размеры проекта тут вообще не при чём.

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
05:30,4050567 ? 5 минут? это как так?
там написано, как. тебя ведь только что это не смущало:
Цитата: zmk.autocad
Просто теряем производительность,

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
Нет я просто взглянул, и не сразу просек что дело в минутах, я сначала понял как 5 секунд.

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
Всё равно я не понимаю процесс редактирование объекта.
Код - C# [Выбрать]
  1. static public void func_edit_text(Double f_h, string f_name, string f_handle)
  2.         {
  3.             Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  4.             Database acDocBase = acDoc.Database;
  5.             Editor acDocEdit = acDoc.Editor;
  6.             long handle_long  = Convert.ToInt64(f_handle,);
  7.             Handle handle = new Handle(handle_long);
  8.             ObjectId id_obj;
  9.             Boolean isValidHandle = acDocBase.TryGetObjectId(handle,out id_obj);
  10.             using (DocumentLock acDockLock = acDoc.LockDocument())
  11.             {
  12.                 using (Transaction acDocTr = acDoc.TransactionManager.StartTransaction())
  13.                 {
  14.                     DBObject obj = acDocTr.GetObject(id_obj,OpenMode.ForWrite);
  15.                     acDocTr.Commit();
  16.                 }
  17.             }
  18.  
  19.         }

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
я читал руководство https://sites.google.com/site/bushmansnetlaboratory/home , там не все статьи переведены. очень мало инфы в рунете по api autocad.
а что тут не так. задача то стоит простая. отлатчик ошибок я не писал пока, потому что собрался писать после того как разберусь с редактированием объекта.
Хотя бы скажи что тут плохого то?


Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
это не код, это мусор.
Не гоните - код как код.
Автору - далее проверяете что у Вас в obj (можно-ли повысить до mtext? а еще лучше проверить это по ObjectId до открытия транзакции - см. свойство ObjectClass.Name/DxfName) и меняете необходимые свойства у полученного объекта до Commit'а транзакции.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
я читал руководство https://sites.google.com/site/bushmansnetlaboratory/home , там не все статьи переведены. очень мало инфы в рунете по api autocad.
Плохо читал. Информации в интернете полно.
Цитата: zmk.autocad
Хотя бы скажи что тут плохого то?
Плохого тут то, что ты бездумно подставляешь фрагменты кода, не имея понятия о том, как это должно работать. Вот заменил ты GetObjectId на TryGetObjectId и что? Как ты думаешь, для чего в коде я получал логическое значение?
Код - C# [Выбрать]
  1. long handle_long  = Convert.ToInt64(f_handle,);
что это за недосказанность в скобках?
Код - C# [Выбрать]
  1. ObjectId id_obj;
Возьми за правило инициализировать подобные переменные значением ObjectId.Null.
Код - C# [Выбрать]
  1. Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  2.             Database acDocBase = acDoc.Database;
Начиная с AutoCAD 2015 нужно предварительно проверять acDoc на равенство null, иначе если твой код в будущем будет вызван при автоматической загрузке, ты можешь получить исключение.
Код - C# [Выбрать]
  1. long handle_long  = Convert.ToInt64(f_handle,);
Ты уверен, что тебе в качестве значения f_handle не передали "чебурашку"? Читать про Int64.TryParse().

Код - C# [Выбрать]
  1. DBObject obj = acDocTr.GetObject(id_obj,OpenMode.ForWrite);
А ты уверен, что объект, который пытаешься получить по идентификатору, не удалён? Смотри перегруженные варианты метода.
Цитата: Дима_
Не гоните - код как код.
Ещё один, млин...

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Ещё один, млин...
Я тоже могу обос***ть абсолютно любой код, тем паче что половина Ваших замечаний, требуют как минимум предварительных уточнений до критики (проверять в каждой функции "чебурашку" на входе точно не требуется - иначе комп. будет одними проверками занят - если мы точно знаем - то есть уже предварительно проверили входные данные, либо получили их из 100% достоверных источников - это только лишние ресурсы, а проверка document'а на null задавать целесообразно в макросах компиляции - а у автора, насколько я помню разговор шел про 2014 акад) - не забывайте - автору неделя "от роду".

Оффлайн zmk.autocadАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 64
  • Карма: 0
Плохого тут то, что ты бездумно подставляешь фрагменты кода, не имея понятия о том, как это должно работать. Вот заменил ты GetObjectId на TryGetObjectId и что? Как ты думаешь, для чего в коде я получал логическое значение?
да не спорю, где то не врубаю, но в мануале не догоняю больше. когда пишу, понимание немного приходит.
Получал что бы сделать условие на результат операции. но на данный момент я его не делал потому что хотел сначала разобраться с процессом редактирование.

что это за недосказанность в скобках?
да тут реально не догнал в подсказке написано для сведений о форматировании для определенного языка и региональных настроек.

Возьми за правило инициализировать подобные переменные значением ObjectId.Null.
Да про это читал как то! согласен.

Ты уверен, что тебе в качестве значения f_handle не передали "чебурашку"? Читать про Int64.TryParse().
про tryparse я то же читал. там ставишь разрешенный тип числа и ещё что то, затем переменную куда возвратить результат и сам метод возвращал булево значение результата.

А на самом деле спасибо. Твоя критика мне очень помогает на самом деле!

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Цитировать
Я тоже могу обос***ть абсолютно любой код
Welcome.
Цитировать
тем паче что половина Ваших замечаний, требуют как минимум предварительных уточнений до критики
Ну так... давайте уточним, ежели кому чего не понятно.

проверять в каждой функции "чебурашку" на входе точно не требуется - иначе комп. будет одними проверками занят
Значит Вы умнее Беарне Стровструпа, утверждающего как раз противоположное. В этом случае конечно же, не спорю с Вами.
если мы точно знаем - то есть уже предварительно проверили входные данные, либо получили их из 100% достоверных источников - это только лишние ресурсы
Ну, если Вы "точно знаете", то конечно же можете полагаться на это. Я же предпочитаю перестраховываться - как правило это не подводит.
Цитата: Дима_
а проверка document'а на null задавать целесообразно в макросах компиляции
Поделитесь со мной таким чудесным кодом?
Цитата: Дима_
а у автора, насколько я помню разговор шел про 2014 акад
Сегодня про 2014, а завтра последует вопрос о том, почему не работает в 2015 и 2016. Нужно смотреть хотя бы на шаг вперёд.
Цитата: Дима_
не забывайте - автору неделя "от роду".
Это не отменяет необходимость читать текст по ссылкам, которые даются. Если бы он внимательно почитал материал,  на результаты которого я давал ссылку, а не просто открыл и закрыл, то он знал бы, в чём заключается разница между обозначенными методами и как это используется в коде, т.к. этот код так же присутствовал в том же материале.

На данный момент времени я, к сожалению, вижу, что человек ленится читать и по большей части занимается гаданием.

P.S. Для особо чувствительных уточняю: под "мусором" подразумевалась бездумная замена обозначенного выше метода GetObjectId на TryGetObjectId. Все остальные замечания - это дополнительная информация для размышления.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Андрей Бушман, Дима_, zmk.autocad
А теперь все дружно перешли на нормальный русский язык. И без наездов друг на друга. Андрея, как заводилу, это касается в первую очередь.
И с оффтопом завязывайте.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение