Последние сообщения

Последние сообщения

Страницы: [1] 2 3 ... 10
1
AutoCAD .NET API / Преимущества Point3dCollection
« Последний ответ от RevitTormentor 15-12-2017, 20:49:55 »
В чём преимущества Point3dCollection перед ObservableCollection<Point3d>? какие то методы хорошие? Место? Скорость?
2
Хм, а как можно проверить? Есть идеи по алгоритму? Я бы проверил, но не представляю как :(
Загони в строку 255 символов "\u2211" (это символ ∑) и запиши её в расширенные данные в DxfCode.ExtendedDataAsciiString. Ну и убедись, что их 255, а не обрезало наполовину.
3
Это же надо так придумать! Ну ладно, придумать... Но хотя бы задокументировали столь неочевидное поведение! Сразу вспоминается цитата с баша: http://bash.im/quote/409943
Я надеюсь, хотя бы, что если null задать, то это удалит все данные у объекта? :)
4
Однако, записываются/перезаписываются только данные приложения appName.
Более того. Они и удаляются таким же образом. Т.е. если тебе нужно из Xdata удалить приложение appName, то удалять следует так:
Код - C# [Выбрать]
  1. using (ResultBuffer rb = new ResultBuffer(new TypedValue(1001, appName)))
  2. {
  3.     obj.XData = rb;
  4. }
5
Вот тут интересный момент: байт или символов (в одном символе два байта)? Нужно проверять. Думаю что символов.
Хм, а как можно проверить? Есть идеи по алгоритму? Я бы проверил, но не представляю как :(
6
Не зря же там уточнение, что именно ASCII-строка?
Это может быть любая Unicode-строка. Во всяком случае явных ограничений нет. В документации указано длиной до 255 байт. Вот тут интересный момент: байт или символов (в одном символе два байта)? Нужно проверять. Думаю что символов. Хранятся они точно как Unicode-строки, как и любые строки в AutoCAD начиная с 2007-ой версии.
7
И снова здравствуйте!
Называется: "дошло до утки на третьи сутки"...
Озаботился проблемой сохранения данных других приложений в XData при записи/перезаписи моих данных. Сделал громоздкую обработку всех данных в XData "до" и "после" моих данных, чтобы затем сформировать один общий ResultBuffer и передать его в XData. А сейчас с удивлением для себя обнаружил, что API "всё делает за нас". Оказывается, что при присвоении значения XData не происходит его полная замена! Вроде бы, ожидается именно такое поведение, когда видишь присвоение значения свойству XData (7-я строка):
Код - C# [Выбрать]
  1. using (ResultBuffer rb = new ResultBuffer(new TypedValue(1001, appName)))
  2. {
  3.     foreach (TypedValue tVal in values)
  4.     {
  5.         rb.Add(tVal);
  6.     }
  7.     obj.XData = rb;
  8. }
  9.  
Однако, записываются/перезаписываются только данные приложения appName. Существующие данные других приложений сохраняются! Крайне неочевидным оказалось для меня такое поведение. Хотя, должен был раньше догадаться. Если бы это было не так, моё исследование споткнулось бы на постоянной перезаписи данных :)
Логично было бы, наверное, делать это с помощью вспомогательного метода SetXDataForApplication (по аналогии с имеющимся GetXDataForApplication). Тогда бы не возникло такого недопонимания, по крайней мере у меня. И что самое печальное - в справке об этом ни слова...
8
Это ободряет! :)
Проверил на запись-чтение такую строку: !@#$%^&*()_+№";:?-=[]{}'|\/.,<>`~%‰°±•Проблем не возникло. Думаю, такого набора спецсимволов мне хватит.

Думал: может имеет смысл заранее предусмотреть конвертацию строки в поток байтов и записывать под кодом DxfCode.ExtendedDataBinaryChunk? Но, вроде как, и DxfCode.ExtendedDataAsciiString нормально справляется.
9
По опыту пишется все подряд без проблем: кириллица, символы форматирования и всякие значки...
10
Здравствуйте!
Возможно, что у меня под вечер немного ум за разум заходит, но мне видятся некоторые возможные проблемы с записью строки в XData под кодом DxfCode.ExtendedDataAsciiString. Не зря же там уточнение, что именно ASCII-строка? Может же получиться так, что какая-то строка будет искажена из-за этого при чтении-записи (если есть какие-то спецсимволы)? Возможно, есть какой-то справочный материал по этой теме?
Страницы: [1] 2 3 ... 10