P.S.: Вообще-то в этом коде ты клонируешь не таблицу, а табличный стиль.Разве?
Просто имена переменных корявыеКорявые имена способствуют соответствующему восприятию, путанице и появлению ошибок.
Этот кода - самый, что ни есть, стандартный из всех возможных примеров, что можно найти.Допущенные тобой ошибки - твои личные. По обозначенным ссылкам они отсутствуют, так что не нужно пенять на других.
Ты пробовал сделать то, что тебе советовали (http://adn-cis.org/forum/index.php?topic=2736.msg9589#msg9589) (п.2)?Да. Если выставить DuplicateRecordCloning.MangleName, то стили (табличный и текстовый) копируются в текущий документ с приставками к имени символов $0$. Конечно текстовый стиль не перезаписывается, но при каждом использовании кода текущие списки стилей будут, простите за мой французский, засераться новыми копиями стилей
Допущенные мной ошибки ни коем случаем не являются причиной вопроса, описанного в самом начале)))Этот кода - самый, что ни есть, стандартный из всех возможных примеров, что можно найти.Допущенные тобой ошибки - твои личные. По обозначенным ссылкам они отсутствуют, так что не нужно пенять на других.
If a duplicate is found, ignore the clone, and continue to use the existing record in the destination database. This is how the INSERT command and Database.insert() operate.Или DuplicateRecordCloning.UnmangleName:
Primarily used by RefEdit when it checks records back into the origin database. Any mangling done by MangleName is undone, and then it defaults to Ignore. In other words, if a duplicate is found after the mangling is removed, AutoCAD continues to use the existing record, and ignores the cloned one.Их описание в справке не совсем ясно для меня, поэтому лучше проверить эти варианты на примере.
Попробуй вариант DuplicateRecordCloning.Ignore:Вот тут и начинается самое интересное)ЦитироватьIf a duplicate is found, ignore the clone, and continue to use the existing record in the destination database. This is how the INSERT command and Database.insert() operate.Или DuplicateRecordCloning.UnmangleName:ЦитироватьPrimarily used by RefEdit when it checks records back into the origin database. Any mangling done by MangleName is undone, and then it defaults to Ignore. In other words, if a duplicate is found after the mangling is removed, AutoCAD continues to use the existing record, and ignores the cloned one.Их описание в справке не совсем ясно для меня, поэтому лучше проверить эти варианты на примере.
Если резюмировать, то у тебя есть такие варианты:Естественно идеальный вариант п.2. Кстати DuplicateRecordCloning.UnmangleName с виду делает почти тоже самое, что и DuplicateRecordCloning.Ignore
1) Использовать DuplicateRecordCloning.Replace и тогда заменяются стили в чертеже-приёмнике.
2) Использовать DuplicateRecordCloning.Ignore и тогда используются стили, которые есть в чертеже-приёмнике. Кстати, это не только текстовый стиль, но и табличный стиль. То, что у тебя при этом возникает Fatal Error мы пока рассматривать не будем.
3) Использовать DuplicateRecordCloning.MangleName и тогда вопросов нет - свои текстовый и табличные стили.
Так какой вариант тебе нужен?
Естественно идеальный вариант п.2.Для меня этот вариант совсем не выглядит идеальным, т.к. при копировании таблицы я бы не хотел, чтобы у меня все элементы ячеек выглядели бы не так, как в исходном чертеже.
В данном случае это все обусловлено тем, что файл из которого копируется таблица - это просто как исходник. А таблица как раз не должна по содержимому получится как в исходникеЕстественно идеальный вариант п.2.Для меня этот вариант совсем не выглядит идеальным, т.к. при копировании таблицы я бы не хотел, чтобы у меня все элементы ячеек выглядели бы не так, как в исходном чертеже.
проблема исчезлаНесколько странно, т.к. в этом случае должен был быть не Fatal Error, а Exception с кодом NotOpenForWrite
Проверил на 2010, 2013 и 2016 автокаде - работает)проблема исчезлаНесколько странно, т.к. в этом случае должен был быть не Fatal Error, а Exception с кодом NotOpenForWrite
А каким местом на это влияло Replace и Ignore? Или при Replace тоже были Fatal Error, но ты на них не попадал?В том-то и юмор - при Replace все работало без проблем. Просто я столкнулся с проблемой переопределения текстового стиля и начал "копать" причину
modplus.orgСимпатично сайт заделал, молодец! :) Правда "очепяток" в тексте многовато...
Правда "очепяток" в тексте многовато...
Ну если сидеть и ждать, когда получится идеальная программа, чтобы поделиться ее с пользователем, то так и будешь сидеть... :-)Правда "очепяток" в тексте многовато...Off-Topic: показать
Похоже и в программе тоже.Имхо: если серьёзно за дело возьмётся + освоит модульное тестирование для своего кода, то софт получится хороший (за который деньги платить не жалко). С хорошими идеями у Модиса проблем нет. У него, как я заметил, в основном качество реализации хромает (к сожалению). Но повторюсь - если он со временем всё же сможет сделать акцент на качестве, то это будет "бомба". :)
С хорошими идеями у Модиса проблем нетВот за это я ему плюсик и поставил.
Ну если сидеть и ждать, когда получится идеальная программа, чтобы поделиться ее с пользователем, то так и будешь сидеть... :-)Есть и обратная сторона медали: пользователь может так обжечься о качестве реализации того или иного продукта, что его потом и калачом не заманишь на повторную попытку использования (даже если очередная версия имеет намного более качественный код). Это тот случай, когда "ложечки нашлись, а осадочек остался". Психология, так сказать. Каждый разработчик для себя сам решает, на чём делать акцент: на фантиках, на скорости разработки или же на качестве. Подобрать оптимальное соотношение этих параметров - искусство (имхо).
Ну, Андрей, тут все понятно и логично. У программы всегда будут постоянные пользователи, всегда будут те, кто обжегся, кому просто не понравилась или кому вообще не нужна) Это оправданный риск. К тому-же сейчас у модуля нет никакого пиара, кроме раздачи на рутрекере, потому-что есть еще места, которые нужно улучшатьНу если сидеть и ждать, когда получится идеальная программа, чтобы поделиться ее с пользователем, то так и будешь сидеть... :-)Есть и обратная сторона медали: пользователь может так обжечься о качестве реализации того или иного продукта, что его потом и калачом не заманишь на повторную попытку использования (даже если очередная версия имеет намного более качественный код). Это тот случай, когда "ложечки нашлись, а осадочек остался". Психология, так сказать. Каждый разработчик для себя сам решает, на чём делать акцент: на фантиках, на скорости разработки или же на качестве. Подобрать оптимальное соотношение этих параметров - искусство (имхо).
Лучший метод - отвлечься на другую проблему ) Или попробовать объяснить проблему кому-нибудь. Обычно в процессе объяснения сам понимаешь в чем делоOff-Topic: показать
Я еще один раз убедился, что лучший метод разобраться с ошибкой - это написать "хелло ворд" с ней.
лучший метод
Лучший методЛучший метод - TDD (https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) (имхо). В противном случае* ошибки чаще будет обнаруживаться не разработчиком, но пользователями его ПО, что существенно будет понижать карму как ПО, так и разработчика (имхо).
Я писал про "разобраться с ошибкой" - то есть "вылечить" ее, а не способ найти.А что, ошибки можно "лечить" не находя их? :)
И не понимаю тех формучан (а этим грешат и достаточно опытные) которые выкладывают кода на строк эдак 800 и говорят - у меня тут где-то "фаталит" - то есть - я тут "панописал" - но мне самому разбираться лень - а Вам все равно делать нечего.Браво! Я каждый раз "намекаю", что если хотите, чтобы помогли с поиском ошибки и/или отправкой бага в Autodesk - минимизируйте код, создайте отдельный проект, которого достаточно для воспроизведения ошибки. Увы, но не всегда "намёк" воспринимается. Создаётся впечатление, что создать новый проект - это самое сложная процедура...
Ошибки есть и будут всегда - код пишет человек, который может и отвлечься и устать, и прочее.Согласен.
И спросить кого-то - это всегда только плюс.Тоже согласен.
А если хочешь - то зачем "направлять" людей на то, чтобы они "не ленились, делали новые проекты и сами находили ошибки"?А вот тут ты не прав. Во-первых, лично у меня вызывает отторжение и нежелание помогать человеку, которому лень пошевелится для решения собственной проблемы. Хочешь чтобы тебе помогли? Пожалуйста. Но и ты не ленись принять в этом участие. В данном конкретном случае я думал, что ты проверил все варианты и вышел на баг в AutoCAD .NET API. А если это баг, то есть и достаточно четкие и понятные правила для оформления его и отсылки в Autodesk, которые нужно соблюсти. В первую очередь это проект с максимально простым кодом, который этот баг воспроизводит. Вот об этом я не устаю повторять. ;)
И вообще - вопрос, заданный в топике, нашел решение! Закрывайте тему и хватит тут флудить! Для этого обычно есть специальные ветки!Не нужно учить администратора тому, как управлять форумом. А то заставлю учить правила и сдавать экзамен! :D
Создаётся впечатление, что создать новый проект - это самое сложная процедура...Которая не редко еще и показывает что ошибка "не здесь".