Опрос. Каким стилем программирования вы предпочитаете пользоваться и почему? - Страница 2
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Опрос. Каким стилем программирования вы предпочитаете пользоваться и почему?

Опрос. Каким стилем программирования вы предпочитаете пользоваться и почему?

Ответ
Поиск в этой теме
Непрочитано 29.06.2010, 09:42
Опрос. Каким стилем программирования вы предпочитаете пользоваться и почему?
alex8888
 
Инженер
 
Deutschland
Регистрация: 27.04.2009
Сообщений: 208

Всем привет!
Собственно, хотелось бы узнать, кто какой метод, стиль, вид язык (и чего там еще) программирования предпочитает для решения своих задач или в работе и почему.
Может быть ваше мнение позволит новичку сделать правильный выбор, а бывалому подскажет иной способ составления программ.
Так, например, является ли объектно-ориентированное программирование с помощью VLisp (vla-функций) предпочтительней и легче чем программирование на автолиспе с использованием командных методов?
Можно ли обойтись только лишь каким то одним из этих методов (стилей и тп -затрудняюсь подобрать правильные термины, так что сильно не пинайте ) для решения всех задач, т.е. самодостаточны ли они сами по себе?
Является ли плохим тоном (и насколько) использование "каши" из смеси командных и объектно-ориентированных или еще каких методов одновременно в одной программе? Или можно использовать разные подходы, но разделять коды по своим файлам и составлять библиотеки?
Нужны ли диалоговые окна? И чем их лучше создавать?
Могут быть и другие мнения, делитесь - думаю это будет интересно.

Последний раз редактировалось alex8888, 29.06.2010 в 10:47.
Просмотров: 11964
 
Непрочитано 30.06.2010, 13:09
#21
Capiton


 
Регистрация: 11.03.2009
Тюмень
Сообщений: 109
<phrase 1=


Цитата:
Открой VLX блокнотом, там DCL не кодируется а вставляется в виде текста. И голову чесать не нужно.
Дак DCL то файл элементарный, но поведение элементов диалога описывается в vlx.
При работе с диалогом у пользователя создаётся уверенность, что он может выбирать-удалять-добавлять различные графические элементы (прямоугольники, линии или что там ещё "нарисовано") в элементе image_button просто тыча в него мышью. Я всегда считал, что этого не может быть, потому что не может быть никогда.
Перевел vlx в fas, раскомпилировал(не воровства для, а только любопытства ради), буду разбираться, что за чудеса.
А может и не чудеса вовсе, а я просто туплю...?
Capiton вне форума  
 
Непрочитано 30.06.2010, 14:08
#22
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


А что тут особенного? Просто поиграйся функциями start_image, fill_image, slide_image и end_image.
fill_image затирает старое изображение а slide_image выводит новое.
Цитата:
Перевел vlx в fas, раскомпилировал
А вот как это делается подскажи, пожалуйста.

Последний раз редактировалось E-degtyarev, 30.06.2010 в 14:23.
E-degtyarev вне форума  
 
Непрочитано 30.06.2010, 15:19
#23
Capiton


 
Регистрация: 11.03.2009
Тюмень
Сообщений: 109
<phrase 1=


Цитата:
А вот как это делается подскажи, пожалуйста.
Offtop: Все необходимые программы лежат в сети, при желании сразу найдёшь через поисковые системы. Если скачаешь и не разберешься как пользоваться - пиши в личку(т.к. к данной теме это отношения не имеет) - помогу.
Не понимаю, как с помошью перечисленных тобой функций (+ vector_image) система поймет куда именно (в какую точку) ткнул пользователь на image_button?

Последний раз редактировалось Capiton, 30.06.2010 в 15:29.
Capiton вне форума  
 
Непрочитано 30.06.2010, 15:33
#24
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Capiton, в каждом новом посте у тебя новые подробности. Может сразу и обо всем?
E-degtyarev вне форума  
 
Непрочитано 30.06.2010, 16:21
#25
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Capiton Посмотреть сообщение
Не понимаю, как <...> система поймет куда именно (в какую точку) ткнул пользователь на image_button?
Смотри переменные действия $x и $y
Do$ вне форума  
 
Непрочитано 30.06.2010, 16:50
#26
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от E-degtyarev Посмотреть сообщение
каждом новом посте у тебя новые подробности. Может сразу и обо всем?
Четайти книг многа и разныи Особенно Н. Полещука
В книге AutoLISP и VisualLISP в среде AutoCAD есть примеры программ с использованием графических элементов в диалоговых окнах
gomer вне форума  
 
Непрочитано 01.07.2010, 00:47
#27
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Я с помощью лиспа (хотя вся шутка в том, что как раз в автолиспе это "хреноватенько" реализованно, так сказать на зачаточном состоянии) пришел к пониманию прелести рекурсии и лямбда функций (не путать с mapcar'ом штука удобная, но это совсем не рекурсия). Понравиться этот стиль программирования или нет - вопрос вторичный - но как минимум понять его надо.
P.S. простой проверкой понял ты его или нет - ответь сам себе на вопрос - можешь ли ты написать (можно без графического оформления - просто логику) любую логическую игру - крестики-нолики (большие), шашки, шахматы, реверси - игру с практически неограниченным (по крайней мере многократно превышающим возможности современных ЭВМ) количеством вариантов ходов.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 01.07.2010, 14:19
#28
Meknotek

Проектирование заборов уже в прошлом
 
Регистрация: 29.10.2009
Рязань
Сообщений: 2,089


В первом посте не наблюдаю слова "AutoCAD" (хотя намек на него). Я так понимаю, другие аспекты работы инженера тоже в счет?
Тогда - с++ (стандартный стиль), использую для мини-программок, что-то вроде:
- подсчета массы арматуры (вводятся строчки по три числа - диаметр, длина, кол-во стержней; строчки в файле, ярлык для файла на раб.столе). Хочу сделать расчет массы сеток, вводятся диаметр и длина х ширина в см.
- Есть программа "балка_win32" (классика жанра - тренируемся на котятах, т.е. на балке на 2х опорах), но ввод/вывод в ней сделаны "на скорую руку", скоро буду переписывать на ввод/вывод из/в файл.
- Разнообразные опыты по программированию "параметрических объектов" . Вводим длину/ширину/высоту - получаем готовый, например, автомобиль

Последний раз редактировалось Meknotek, 01.07.2010 в 14:29.
Meknotek вне форума  
 
Автор темы   Непрочитано 06.07.2010, 11:35
#29
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Вопрос, скорее всего к ShaggyDoc:
каким образом применить XML вместо DCL для создания диалогового окна? С чего начать? Есть какой-нибудь примерчик?

Meknotek, а как связываются Автокад и С++? Или у тебя просто это разные проги для разных задач?
alex8888 вне форума  
 
Непрочитано 06.07.2010, 14:34
#30
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Из готовых решений - WPF от Микрософт. Использует язык XAML для разметки пользовательского интерфейса. Но для этого необходимо знать основы .NET, один из языков программирования .NET, саму библиотеку классов WPF и иметь навыки создания .NET приложений под AutoCAD.
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 06.07.2010, 14:45
#31
Meknotek

Проектирование заборов уже в прошлом
 
Регистрация: 29.10.2009
Рязань
Сообщений: 2,089


Цитата:
Сообщение от alex8888 Посмотреть сообщение
Meknotek, а как связываются Автокад и С++? Или у тебя просто это разные проги для разных задач?
В дебри ObectARX не лезу, да и нескоро залезу. Связь обеспечивал примитивно, но действенно - запускаю прогу, она или считывает данные из файла (обычный текстовый документ), или ввод с клавиатуры, а по завершении сохраняет файл-скрипт. В нем сплошные (command "..."), зато делают что надо . Скрипт сохраняется например в C:\script1.scr. На этот же файл ссылается макрос на кнопке (панель в автокаде). Нажимаю - объект строится. Если надо, готовые объекты перетаскиваются потом вручную. Не совсем удобно, зато отвечает главной цели - работоспособное "соединение" своих программ и автокада при минимуме затрат (времени, сил на изучение .NET, ObectARX и т.п.). При этом надо только знать какие команды нужны и их синтаксис, т.е. освоить по сути только (command). Построение некоего объекта сводится к: запуску своей программы, если надо вводу данных, нажатию кнопки в автокаде, переместить в нужное место.
Meknotek вне форума  
 
Непрочитано 06.07.2010, 14:47
#32
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
каким образом применить XML вместо DCL для создания диалогового окна? С чего начать? Есть какой-нибудь примерчик?
Почитайте http://ru.wikipedia.org/wiki/XAML. Там же ссылка на многие другие языки описания интерфейсов.

Набрав в Google "Диалоговые окна XAML" найдете множество примеров.

Но самому начинать не надо. Любая спецификация языка мертва, пока она не будет реализована в системе программирования. В LISP используется только DCL, так что экспериментировать бесполезно. И ни на какой иной язык описания интерфейсов, похоже, переходить не собираются. Хотя обещания были.

Но если очень хочется начать - надо работать в .NET.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 06.07.2010, 15:16
#33
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


ShaggyDoc, то есть для несложных задач пока нет альтернативы DCL и вряд ли будет? За ссылки спасибо, посмотрел.
Почему вообще встал такой вопрос по стилям программирования, скорее всего, потому что интересно стало, на что следует обратить внимание в первую очередь. Понятно, что все имеет свои плюсы и минусы, спорить можно бесконечно. Порой остановиться на чем - нибудь одном невозможно. Вот и хотелось бы "вкратце понять", какие есть конкретно, скажем, для меня,( уже не чайника, но еще и не самовара ), возможности выбора того или иного способа решения конкретно моей задачи. Как я понял, про VBA можно забыть, а в .Net все несколько сложнее (более походит на С++)? Сами же тяжеловесы типа С, Дельфи и тп тяжело уживаются с кадом, потому как ноги растут не оттуда.
Осталось выяснить, когда предпочтительнее использовать АктивЫ-Х и почему.
Offtop: Очень жаль, что XML не поможет с окошками, скажу честно, понравились. Может быть удастся хотя бы как базу данных для примитивов использовать.
alex8888 вне форума  
 
Непрочитано 06.07.2010, 15:28
#34
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от alex8888 Посмотреть сообщение
Очень жаль, что XML не поможет с окошками, скажу честно, понравились. Может быть удастся хотя бы как базу данных для примитивов использовать.
Кто сказал что "не поможет"? При желании вы можете создать свой xml-файл, и генерировать на его основе окно (или любой др. контрол) динамически. Инфы на эту тему полно в инете.
Цитата:
Сообщение от alex8888 Посмотреть сообщение
вопрос по стилям программирования, скорее всего, потому что интересно стало, на что следует обратить внимание в первую очередь.
Могу порекомендовать такую книгу - будет полезна любому программисту.
hwd вне форума  
 
Автор темы   Непрочитано 06.07.2010, 15:39
#35
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Offtop: hwd, спасибо, книгу закачал, теперь чтиво обеспечено

Offtop: Что то ко мне резко стали на Вы обращаться
alex8888 вне форума  
 
Непрочитано 06.07.2010, 18:15
#36
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


а есть ли ли такая библиотечка на аркс, которая интерпретировала бы код на xml в диалоговое окно?
хотя есть же OpenDCL...
gomer вне форума  
 
Непрочитано 06.07.2010, 18:52
#37
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
то есть для несложных задач пока нет альтернативы DCL и вряд ли будет?
Описание окон на DCL есть только в AutoLISP. Сейчас альтернативы нет. Будет или нет в будущем - я не знаю, знает Autodesk. Думаю, что не будет.

Цитата:
Очень жаль, что XML не поможет с окошками, скажу честно, понравились. Может быть удастся хотя бы как базу данных для примитивов использовать.
Мне тоже нравится. Еще больше понравилось, если бы это было стандартным описанием интерфейсных элементов в разных системах. Ну, "эт вряд-ли" (С)

А вот использовать XML для хранения данных можно и нужно. Только с умом. К сожалению, конкурирующие фирмы и здесь два способа описания данных умудрились сделать Но, при желании, можно и своё "подмножество" ввести.

Вот, например, XML для описания таблицы:

Код:
[Выделить все]
<?xml version="1.0" encoding="windows-1251" ?>
<table>
  <summaryinfo Title="ВЕДОМОСТЬ ССЫЛОЧНЫХ И ПРИЛАГАЕМЫХ ДОКУМЕНТОВ" Subject="Система ruCAD" Author="ShaggyDoc" LastAuthor="ShaggyDoc" Create_DTM="23.04.2007 11:56:48" RevNumber="4"/>
  <title rows="1" height="15" ask_title="1">
  <columns count="3">
    <column_1 size="60" type="STRING" align="C"/>
    <column_2 size="95" type="STRING" align="L"/>
    <column_3 size="30" type="STRING" align="L"/>
  </columns>
    <row_1  height="15">
	  <cell_1 text="Обозначение" />
	  <cell_2 text="Наименование" />
	  <cell_3 text="Примечание" />
	</row_1>
  </title>
  <data rows="4">
    <row_1>
      <column_1 data=""/>
      <column_2 data="\LССЫЛОЧНЫЕ ДОКУМЕНТЫ"/>
      <column_3 data=""/>
    </row_1>
    <row_2>
      <column_1 data=""/>
      <column_2 data=""/>
      <column_3 data=""/>
    </row_2>
    <row_3>
      <column_1 data=""/>
      <column_2 data="\LПРИЛАГАЕМЫЕ ДОКУМЕНТЫ"/>
      <column_3 data=""/>
    </row_3>
    <row_4>
      <column_1 data=""/>
      <column_2 data="Спецификация оборудования"/>
      <column_3 data="На X листах"/>
    </row_3>
  </data>
</table>
Здесь содержатся данные, необходимые для рисования таблицы. LISP-программа по этим данным рисует и заполняет таблицу в виде объекта TABLE. Но здесь все понятно и человеку. По этим же данным программа на любом другом языке могла бы, например, сформировать DbGrid для отображения данных в сетке.

Здесь просто заготовка, но строки и колонки могут быть заполнены данными и вновь сохранены в XML - а это уже настоящая локальная база данных.

Из этой же таблицы данные можно отображать и в окне браузера, в "человеко-читаемом" виде - если дополнить еще одной строчкой.

Да, в XML можно описать диалоговое окно и какой-то программой на основании описанных в XML-правил, сгенерировать DCL-файл. Но вряд ли это стоит реально делать.
ShaggyDoc вне форума  
 
Непрочитано 06.07.2010, 19:46
#38
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Вот, например, XML для описания таблицы:
Не стоит забывать, что в таблице могут быть объединения строк/столбцов.
Я прописывал это по аналогии с WPF так:
Код:
[Выделить все]
<?xml version="1.0" encoding="utf-8" ?>
<!--Разработчик: Бушман Андрей (Санкт-Петербург, июнь 2010г.)-->
<!--*******************************************************-->
<!--ДОПУСТИМЫЕ ВАРИАНТЫ ТОЛЩИН ЛИНИЙ:
    ByLineWeightDefault,
    ByBlock,
    ByLayer,
    LineWeight000,
    LineWeight005,
    LineWeight009,
    LineWeight013,
    LineWeight015,
    LineWeight018,
    LineWeight020,
    LineWeight025,
    LineWeight030,
    LineWeight035,
    LineWeight040,
    LineWeight050,
    LineWeight053,
    LineWeight060,
    LineWeight070,
    LineWeight080,
    LineWeight090,
    LineWeight100,
    LineWeight106,
    LineWeight120,
    LineWeight140,
    LineWeight158,
    LineWeight200,
    LineWeight211,
-->
<!--ДОПУСТИМЫЕ ВАРИАНТЫ ЦВЕТОВ ЛИНИЙ И ТЕКСТА:
    AliceBlue,
    AntiqueWhite,
    Aqua,
    Aquamarine,
    Azure,
    Beige,
    Bisque,
    Black,
    BlanchedAlmond, 
    Blue,
    BlueViolet,
    Brown,
    BurlyWood,
    CadetBlue,
    Chartreuse,
    Chocolate,
    Coral,
    CornflowerBlue, 
    Cornsilk,
    Crimson,
    Cyan,
    DarkBlue,
    DarkCyan,
    DarkGoldenrod,
    DarkGray,
    DarkGreen,
    DarkKhaki,
    DarkMagenta,
    DarkOliveGreen, 
    DarkOrange,
    DarkOrchid,
    DarkRed,
    DarkSalmon,
    DarkSeaGreen,
    DarkSlateBlue,
    DarkSlateGray,
    DarkTurquoise,
    DarkViolet,
    DeepPink,
    DeepSkyBlue,
    DimGray,
    DodgerBlue,
    Firebrick,
    FloralWhite,
    ForestGreen,
    Fuchsia,
    Gainsboro,
    GhostWhite,
    Gold,
    Goldenrod,
    Gray,
    Green,
    GreenYellow,
    Honeydew,
    HotPink,
    IndianRed,
    Indigo,
    Ivory,
    Khaki,
    Lavender,
    LavenderBlush,
    LawnGreen,
    LemonChiffon,
    LightBlue,
    LightCoral,
    LightCyan,
    LightGoldenrodYellow,
    LightGray,
    LightGreen,
    LightPink,
    LightSalmon,
    LightSeaGreen,
    LightSkyBlue,
    LightSlateGray, 
    LightSteelBlue, 
    LightYellow,
    Lime,
    LimeGreen,
    Linen,
    Magenta,
    Maroon,
    MediumAquamarine,
    MediumBlue,
    MediumOrchid,
    MediumPurple,
    MediumSeaGreen, 
    MediumSlateBlue,
    MediumSpringGreen,
    MediumTurquoise,
    MediumVioletRed,
    MidnightBlue,
    MintCream,
    MistyRose,
    Moccasin,
    NavajoWhite,
    Navy,
    OldLace,
    Olive,
    OliveDrab,
    Orange,
    OrangeRed,
    Orchid,
    PaleGoldenrod,
    PaleGreen,
    PaleTurquoise,
    PaleVioletRed,
    PapayaWhip,
    PeachPuff,
    Peru,
    Pink,
    Plum,
    PowderBlue,
    Purple,
    Red,
    RosyBrown,
    RoyalBlue,
    SaddleBrown,
    Salmon,
    SandyBrown,
    SeaGreen,
    SeaShell,
    Sienna,
    Silver,
    SkyBlue,
    SlateBlue,
    SlateGray,
    Snow,
    SpringGreen,
    SteelBlue,
    Tan,
    Teal,
    Thistle,
    Tomato,
    Transparent,
    Turquoise,
    Violet,
    Wheat,
    White,
    WhiteSmoke,
    Yellow,
    YellowGreen,
-->
<!--ДОПУСТИМЫЕ ВАРИАНТЫ ВЫРАВНИВАНИЯ СОДЕРЖИМОГО ЯЧЕЕК:
    TopLeft,
    TopCenter,
    TopRight,
    MiddleLeft,
    MiddleCenter,
    MiddleRight,
    BottomLeft,
    BottomCenter,
    BottomRight,
    -->
<!--****************************************************************************************************************************-->
<TableTemplateSettings >
  <!--Общие настройки табличных шаблонов.-->
  <CommonTableSettings LayerName="Таблицы и текст" TableStyleName="Ведомость" TextStyleName="Тип А курсив" TitleBorder="False" TitleRowHeight="10">
   
    <!--Высота и цвет текста наименования таблицы-->
    <TitleTextSettings TextHeight="5" TextColor="Magenta"/>
    <!--Высота и цвет текста заголовка таблицы-->
    <HeaderTextSettings TextHeight="3" TextColor="Red"/>
    <!--Высота и цвет текста данных таблицы-->
    <DataTextSettings TextHeight="3" TextColor="Yellow"/>
    
    <!--Настройки линий внешнего контура таблиц-->
    <BorderLine LineWeight="LineWeight100" LineColor="Turquoise"/>
    
    <!--Настройки внутренних линий в составе заголовка таблицы-->
    <InnerHeaderLines>
      <InnerVerticalLines LineWeight="LineWeight070" LineColor="SlateGray"/>
      <InnerHorizontalLines LineWeight="LineWeight025" LineColor="Yellow"/>
    </InnerHeaderLines>
    
    <!--Настройки внутренних линий в составе данных таблицы-->
    <InnerDataLines>
      <InnerVerticalLines LineWeight="LineWeight025" LineColor="Green"/>
      <InnerHorizontalLines LineWeight="LineWeight015" LineColor="Pink"/>
    </InnerDataLines> 
    
  </CommonTableSettings>
  <!--****************************************************************************************************************************-->
  
  <!--Шаблоны заголовков таблиц-->
  <!--Нумерация столбцов и строк в атрибутах ячеек (Cells) заголовка начинается с 0. 
  "ColumnSpan" - объединение со столбцами, расположенными правее ячейки. "RowSpan" - объединение со строками, расположенными ниже ячейки.-->
  <TableTemplates>
    <!--==========================================================================================================================-->
    <TableTemplate TableTemplateName="StillTable" Title="Ведомость расхода стали" TitleCellAlignment="MiddleCenter">
      <!--Описание заголовка таблицы (не путать с наименованием таблицы)-->
      <Header>
        <!--Колонки в составе заголовка-->
        <Columns>
          <!--10 колонок-->
          <Column Width="10" DataCellAlignment="MiddleCenter"/>
          <Column Width="40" DataCellAlignment="MiddleCenter"/>
          <Column Width="12" DataCellAlignment="MiddleCenter"/>
          <Column Width="12" DataCellAlignment="MiddleCenter"/>
          <Column Width="12" DataCellAlignment="MiddleCenter"/>
          <Column Width="12" DataCellAlignment="MiddleCenter"/>
          <Column Width="12" DataCellAlignment="MiddleCenter"/>
          <Column Width="15" DataCellAlignment="MiddleCenter"/>
          <Column Width="25" DataCellAlignment="MiddleCenter"/>
          <Column Width="15" DataCellAlignment="MiddleCenter"/>
        </Columns>
        <!--Строки в составе заголовка-->
        <Rows>
          <!--5 строк (строку, в которой находится название таблицы, считать не нужно - она будет добавлена автоматически)-->
          <Row Height="8"/>
          <Row Height="8"/>
          <Row Height="8"/>
          <Row Height="8"/>
          <Row Height="8"/>
        </Rows>
        <!--Ячейки в составе заголовка таблицы.-->
        <Cells>
          <!--№ 1-->
          <Cell Column="0" Row="0" ColumnSpan="0" RowSpan="4" TextRotation="45">
            Марка элемента
          </Cell>
          <!--№ 2-->
          <Cell Column="1" Row="0" ColumnSpan="5" RowSpan="0" TextRotation="0">
            Изделия арматурные, кг
          </Cell>
          <!--№ 3-->
          <Cell Column="7" Row="0" ColumnSpan="2" RowSpan="0" TextRotation="0">
            Изделия закладные, кг
          </Cell>
          <!--№ 4-->
          <Cell Column="1" Row="1" ColumnSpan="4" RowSpan="0" TextRotation="0">
            Арматура класса
          </Cell>
          <!--№ 5-->
          <Cell Column="1" Row="2" ColumnSpan="1" RowSpan="0" TextRotation="0">
            A-I
          </Cell>
          <!--№ 6-->
          <Cell Column="3" Row="2" ColumnSpan="2" RowSpan="0" TextRotation="0">
            A-III
          </Cell>
          <!--№ 7-->
          <Cell Column="1" Row="3" ColumnSpan="4" RowSpan="0" TextRotation="0">
            ГОСТ 5781-82
          </Cell>
          <!--№ 8-->
          <Cell Column="2" Row="4" ColumnSpan="0" RowSpan="0" TextRotation="0">
            Итого
          </Cell>
          <!--№ 9-->
          <Cell Column="5" Row="4" ColumnSpan="0" RowSpan="0" TextRotation="0">
            Итого
          </Cell>
          <!--№ 10-->
          <Cell Column="8" Row="4" ColumnSpan="0" RowSpan="0" TextRotation="0">
            Итого
          </Cell>
          <!--№ 11-->
          <Cell Column="6" Row="1" ColumnSpan="0" RowSpan="3" TextRotation="90">
            Всего
          </Cell>
          <!--№ 12-->
          <Cell Column="7" Row="1" ColumnSpan="1" RowSpan="0" TextRotation="0">
            Прокат марки
          </Cell>
          <!--№ 13-->
          <Cell Column="7" Row="2" ColumnSpan="1" RowSpan="0" TextRotation="0">
            Ст3сп
          </Cell>
          <!--№ 14-->
          <Cell Column="7" Row="3" ColumnSpan="1" RowSpan="0" TextRotation="0">
            ГОСТ 103-76
          </Cell>
          <!--№ 15-->
          <Cell Column="9" Row="1" ColumnSpan="0" RowSpan="3" TextRotation="90">
            Всего
          </Cell>
        </Cells>
      </Header>
    </TableTemplate>
    <!--==========================================================================================================================-->
  </TableTemplates>
</TableTemplateSettings>
Код, вычерчивающий таблицу по xml-шаблону не выкладываю, т.к. он на .Net.
hwd вне форума  
 
Автор темы   Непрочитано 07.07.2010, 00:05
#39
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


А как Лисп "понимает" XML? Какие функции и команды задействованы?
Сама разметка XML несложная, а дальше что? Читать построчно XML-файл? Как связать его с лиспом?
alex8888 вне форума  
 
Непрочитано 07.07.2010, 06:31
1 | #40
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Не стоит забывать, что в таблице могут быть объединения строк/столбцов.
Разумеется. У меня объединение делается по признаку эквивалентности атрибутов заголовков. Например:
Код:
[Выделить все]
<?xml version="1.0" encoding="windows-1251" ?>
<table>
  <summaryinfo Title="ВЕДОМОСТЬ ОТВЕРСТИЙ В СТЕНАХ И ПЕРЕГОРОДКАХ" Subject="Система ruCAD" Author="ShaggyDoc" LastAuthor="ShaggyDoc" Create_DTM="23.04.2007 11:56:48" RevNumber="4"/>
  <title rows="2" height="2" ask_title="0">
  <columns count="7">
    <column_1 size="20" type="STRING" align="C"/>
    <column_2 size="25" type="INT" align="R"/>
    <column_3 size="25" type="INT" align="R"/>
    <column_4 size="25" type="INT" align="R"/>
    <column_5 size="25" type="INT" align="R"/>
    <column_6 size="35" type="STRING" align="L"/>
    <column_7 size="30" type="STRING" align="L"/>
  </columns>
    <row_1  height="5">
	  <cell_1 text="Марка" />
	  <cell_2 text="Размеры, мм" />
	  <cell_3 text="Размеры, мм" />
	  <cell_4 text="Размеры, мм" />
	  <cell_5 text="Отметка|низа|от пола|этажа, м" />
	  <cell_6 text="Марка|чертежей" />
	  <cell_7 text="Примечание" />
	</row_1>
    <row_2  height="10">
	  <cell_1 text="Марка" />
	  <cell_2 text="Ширина" />
	  <cell_3 text="Высота" />
	  <cell_4 text="Толщина|стены" />
	  <cell_5 text="Отметка|низа|от пола|этажа, м" />
	  <cell_6 text="Марка|чертежей" />
	  <cell_7 text="Примечание" />
	</row_2>
  </title>
  <data rows="1">
    <row_1>
      <column_1 data=""/>
    </row_1>
  </data>
</table>
Выглядит как на рисунке (там уже заполнено данными, тоже автоматически)

Цитата:
А как Лисп "понимает" XML?
LISP в AutoCAD никак XML не понимает. Для этого надо писать свои функции, и для некоторых диалектов они есть. Но в AutoCAD LISP может обращаться к COM. Можно использовать обращение к MSXML - оне есть на компьютере практически всегда. Только этот парсер, при всей его продвинутости, достаточно медленный. Поэтому написано очень много альтернативных парсеров. Я, например, использую парсер TjanXMLParser2, разработанный Jan Verhoven.

В этом случае делается своя dll с COM-сервером и из LISP обращение происходит к нему. На LISP также придется немало поработать. Например, для рисования таблиц у меня набралось 18 функций. Но само чтение данных при наличии библиотечных функций происходит достаточно просто:

Код:
[Выделить все]
(ru-xml-storage-read-string
               table_xml
               (strcat "data/row_"
                       (itoa curr_row)
                       "/column_"
                       (itoa curr_column)
               ) ;_ end of strcat
               "data"
               ""
             )
Собственно чтение XML с помощью COM на LISP делается стандартно и просто:

Код:
[Выделить все]
(defun _ru-xml-storage ()
;;; Создание COM-сервера
  (vlax-get-or-create-object "ruXmlStorage.ruXmlReg")
)

(defun ru-xml-storage-read-string (xml_name relative_path attrib_name default / srv)
;;;  xml_name - полное имя xml-файла
;;;  relative_path - относительный от root путь элемента в виде
;;;  level1/level2/level3  
;;;  attrib_name - имя атрибута в последнем элементе
;;;  value  - строковое значение атрибута
;;;
  ;|
Пример:
(ru-xml-storage-read-string (ru-file-acad "rucad.cui" nil)  "Header/WorkspaceRoot/WorkspaceConfigRoot/WorkspaceConfig"  "UID"  "")
|;
  (if (setq srv (_ru-xml-storage))
    (vlax-invoke-method srv "ReadString" xml_name relative_path attrib_name default)
    (alert "Не удалось запустить ruXmlStorage.ruXmlReg")
  ) ;_ end of if
)
Эта функция може читать любой XML. Хоть собственное описание таблицы, хоть acad.cui как в примере. Надо только знать, к какому пути и атрибуту обращаться.
Миниатюры
Нажмите на изображение для увеличения
Название: v_osz.png
Просмотров: 75
Размер:	5.4 Кб
ID:	41942  
ShaggyDoc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Опрос. Каким стилем программирования вы предпочитаете пользоваться и почему?

Реклама i
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск