|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Вот про "понты". Есть формула площади прямоугольника A*B. Допустим, A и B равны 2. Зная, что 2*2=4 и 2+2=4 некоторые могут сделать вывод, что в формулу можно поставить сложение. Для частного случая результат будет правильный, но методически - неверно. Что делает logior если объяснять "по-крестьянски"? Эта функция формирует из переданных целых чисел (назовем их битами) некое число (флаг), анализируя которое можно узнать, какие биты в него входят. Биты должны быть из ряда 0 1 2 4 8 16 .... Пример Код:
Код:
Код:
|
|||
|
||||
Цитата:
Но я останусь при своем мнении - тип данных для массива варианта задается как сумма битового флага массива и битового флага типа элемента массива, каждый из них по отдельности не может включать другой бит (по определению). Поэтому, я считаю, что применение logior именно в этом случае не оправдано. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,850
|
Offtop: ShaggyDoc, ну надо же было закошмарить ситуацию, чтобы получить внятные и ясные объяснения
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Прошу прощения, но про побитовое ИЛИ я то как раз понимаю, Не стоит считать инженеров "недопрограммистами".
Мой вопрос был в другом - почему надо именно так складывать значения констант типов, если в самой справке, к примеру, при присвоении VARIANT безопасного массива из doubles, это вообще пропускается? Если пропустить, то, в случае преобразования списка точек в координаты для полилинии, все работает безукоризненно. Тогда, как я понимаю, логическое ИЛИ может применяться в других ситуациях при работе с константами Автокада. Подумал, посчитал... В общем, соглашаюсь с гуру Вот почему: скажем, нам нужен массив из длинных целых чисел. У Array константа 9, у Long Integer - 3. Если просто суммируем - получим 12. А вот если побитово сложим, то 1001 OR 0011 1011 получим 11 :-) Для моего случая, когда нужен массив из Doubles Если складываем: 9+5=14 А побитово 1001 OR 0101 1101 , т.е. 9 OR 5 = 13 Теперь уже и сам убедился. Копаем дальше. Если общий флаг типа данных - 1101, то это может быть и 9+5 и 9+4, т.е. либо Double, либо Single... А что и з этого следует? В таком массиве точность станет какой? Как АвтоКАД определит тогда тип данных? Может он все-таки здесь работает не по-битово, а с целыми числами, как с константами? Или, скажем, берет тип данных массив и тип данных его членов (Doubles)? В общем, вопросов появляется больше, чем ответов. МОжет потому и нет в справке при создании Variant составного типа массива и Doubles? ;-) И когда я сам пропускаю этот (logior ...) и этот (+...) в своей функции, то все замечательно считается. Последний раз редактировалось Frigate, 28.09.2010 в 10:39. |
|||
|
||||
Цитата:
Нужно определить, содержит ли 9071 значения 128 и 4, и если нет - добавить. Именно это и можно сделать с помощью logior: Код:
9199-9071=128. То есть, бит 4 присутствовал изначально, а бит 128 добавился. Здесь сложением logior заменять нельзя. Последний раз редактировалось Do$, 28.09.2010 в 10:46. |
||||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Do$
благодарю, про привязки понял. Посмотри пожалуйста, на мое дополнение к пред. моему сообщению (точнее, я полностью почти изменил сообщение). Там я вопрос задал, и уже не первый раз, про справку автокада. Там не используются в примере общие коды (сумма или logior). И без них кстати полилиния замечательно так создается. А по поводу привязок все хотел спросить - нужно ли их отключать перед тем, как программно строить полилинию? Если да, то почему? Точнее, какая именно ситуация может вызвать неправильную прорисовку полилинии? Ведь она задается массивом координат. Как же тогда привязки могут на нее повлиять? |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,850
|
vlax-make-variant создает тип variant, насколько я понимаю. На основе стандартных типов данных (vbInteger, vbDouble, vbString и т.д.). Не, можно, конечно, из variant сделать еще один variant и так до бесконечности (у попа была собака) - но смысл?
Для преобразования списка координат вида '((0. 0.) (10. 0.) (20. 10.)) в значение, понимаемое vla-addlightweightpolyline, делаем следующее: Код:
Пока по рабочим делам бегал, много воды утекло... Может, уже и не надо никому
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Код:
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Елпанов Евгений,
кратко и емко Кулик Алексей aka kpblc , Алексей, код-то я как раз уже понимаю и написал его для своей программы. Вопрос в другом :-) Наверное, я не точно все описал. Впрочем ясно, что вообще можно не указывать сумму констант типов массив и Double при задании vlax-make-variant. Вот, кстати, из справки цитата: Цитата:
|
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Заодно учитывать, что при использовании функций command и vl-cmdf координаты всегда должны быть в текущей ПСК. При использовании entxxx и объектных методов - всегда в МСК. Учитывать, что getpoint возвращает координаты в текущей ПСК. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Безусловно так, но хотелось-бы добавить, что такое применение оправдано, ну скажем в ассемблере (в общем оно там на каждом шагу), гораздо более интересные вещи при помощи логических операций делаются применительно к проверке условий (не спроста они созвучны с or и and) - при правильном подходе (да еще и с применением lsh) - количество проверок сокращается в разы, но это тема для отдельного большого обсуждения.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
Цитата:
Код:
Последний раз редактировалось gomer, 29.09.2010 в 00:15. Причина: может я не ту кнопку нажал? |
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
gomer,
да, я тоже пришел к такому выводу Задам еще корифеям вопрос: Если можно, посоветуйте, как сделать: надо вставлятьТЕКСТ или МТЕКСТ в рамку размером 5 на 10 мм. Чтобы, если он не будет влезать в рамку, коэф-т сжатия текста уменьшился до нужных размеров. Как это реализовать? на лисп? Последний раз редактировалось Frigate, 29.09.2010 в 12:36. |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
1. проверяй габаритную рамку vla-GetBoundingBox и сравнивай со своей.
2. Для текста textbox Хотя мтекст да еще с форматированием та еще штучка. Почитай эти (особенно последнюю) темы Как получить координаты рамки text? Автоматический подбор высоты текста Еще дельные ссылки: http://forums.autodesk.com/t5/AutoCA...ps/m-p/2076942 (там выложен ShrinkwrapMText v2a.zip) MText - Set Limits Box to minimum (смотреть коды T Willey и fx.lsp выложенный C Witt)
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
|
|||
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Цитата:
большущее спасибо Сильное упрощение процесса ))) Век живи, век учись... Есть напр. номера кабелей С1-1-1, с1-1-2 и тп, а есть С1-49-12... То есть автоматически при выравнивании слишком пестро смотрятся вставки. Придумал, что можно контролировать количество символов в строке кабеля. И если, напр., в строке, определяющей номер кабеля, меньше 10 символов, то добавляем по одному символу "пробел" слева и справа. Естественно, что "пробелы будут добавляться лишь к временным переменным (одной переменной), для придания "ляповатого вида" Код завтра напишу, пора и спать ))) Последний раз редактировалось Frigate, 29.09.2010 в 22:03. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,850
|
Надеюсь, не имелось в виду "сделать атрибут с выравниванием по ширине"?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |