LINUX.ORG.RU

zcad

 


2

1

Дефолтная KUbuntu18.04 и zcad.

За время прошедшее с последнего скриншота zcad переехал со всеми любимого соусфоржа на всеми любимый гитхаб https://github.com/zamtmn/zcad Разделился на 2 части - электрический (справа) и просто чертилку слева. Я приобщился к темным темам - пришлось даже перерисовать ворованые иконки. Потихоньку ковыряюсь

>>> Просмотр (2560x1440, 1868 Kb)

★★

Проверено: JB ()
Последнее исправление: JB (всего исправлений: 3)

-- в чем разница, что пришлось разделять на чисто кульман и на электрическую программу + кульман

-- почему нельзя это было сделать модульно, основа - кульман, модуль в директорию подсунул, вуаля - есть функционал по отрисовке электрики, другой модуль подсунул - гидравлика, опс, etc

-- что входит в функционал электрики ? я рисую э3 (э4) и по ней строится таблица соединений и спецификация оборудования, посчитать длину трассы\\кабеля ?

-- может ли сама программа отрисовать кабельные трассы по поэтажному плану ? вижу что есть элемент «кабель», «стояк»

AHAH
()
Ответ на: комментарий от AHAH

почему нельзя это было сделать модульно

На голых дллках это делать не ахти, а поддержка паектов в fpc пока не допилена. Появятся динамические пакеты - сделаю

что входит в функционал электрики ?

негусто, расставить устройства, соединить их кабелями и рутина типа нумерации и кабельного жунала

может ли сама программа отрисовать кабельные трассы по поэтажному плану

Может. юзер расставляет оборудование на плане, прочерчивает трассы (по которым потом программа ходит кабелями) и скармливает файлик описывающий что с чем соединить

zamtmn ★★
() автор топика

Оно еще и на паскале, вот так необычности. Из живого софта на Паскале я только BSPlayer виндовый знал :)

bonta ★★★★★
()
Ответ на: комментарий от zamtmn

оборудования (устройства) библиотечные ? чтобы и принципиальная схема была, и схематичная отрисовка была, и чтобы полная с посадочными ?

а у оборудования (устройства) есть характеристики ? I\\U\\W, чтобы автоматом подобрать сечение кабеля ? это табличные величины, легко автоматизировать

AHAH
()
Ответ на: комментарий от AHAH

Устройства можно пихать в «библиотеки» к устройствам можно привязать любые характкристики.

чтобы автоматом подобрать сечение кабеля ?

нет, не реализовано, но думаю нетрудно

zamtmn ★★
() автор топика

Я, к сожалению, так и не смог собрать zcad из сорцов. Убивает вот эта вся возня с паскалем, какие-то модули куда-то там устанавливать, потом искать всё это, что где... Жутко хочется всё собирать какимнить более привычным линуксоидам способом. Но это претензия, скорее, к самому Лазарусу.

Deleted
()
Ответ на: комментарий от Deleted

Я, к сожалению, так и не смог собрать zcad из сорцов.

На самом деле, это не очень сложно (я в своё время проходил этот квест, когда делал порт для FreeBSD). Пришлось немного повозиться с компонентами лазаруса (opengl, fpvectorial, anchordocking) и написать makefile для самого zcad'а. Порт, впрочем, давно пора обновить, с тех пор могло что-то поменяться.

danfe
()
Ответ на: комментарий от danfe

Можно, конечно можно написать всё это, но Лазарус и компани (все вот такие, виндового образца разработки) не приспособлены для удобного собирания проектов. Как будто никто кроме автора собирать не будет. Малораспространённость лазарусовских проектов этим и объясняется.

А вообще надо этот zcad накатить опять, давно пробовал.

Deleted
()

Requirements:

Lazarus 2.0 RC1 (or trunk)

Что же там такого обязательного понадобилось, чего нет в 1.8.4?

gag ★★★★★
()

на всеми любимый гитхаб

Это уже в прошлом, его купили мелкомягкие, теперь это будет гиблым местом.

th3m3 ★★★★★
()
Ответ на: комментарий от danfe

Да, были изменения влияющие на сборку

zamtmn ★★
() автор топика
Ответ на: комментарий от Deleted

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

zamtmn ★★
() автор топика
Последнее исправление: zamtmn (всего исправлений: 1)
Ответ на: комментарий от zamtmn

Для этого им нужно реально заниматься, а я пока мимокрокодил. На неделе разгребусь, попробую zcad, потом попробую собрать. И если займусь мейком, отпишусь. danfe, может к тому времени исправит свой мейкфайл? подсмотрю.

А за сборки для линукса спасибо.

Deleted
()

Замоделлил бы хоть что-то для скриншота.

ШГ.

Bfgeshka ★★★★★
()
Ответ на: комментарий от Deleted

Лазарус и компани (все вот такие, виндового образца разработки) не приспособлены для удобного собирания проектов.

Вот уж как раз по части _собирания_ проектов фрипаскаль куда удобнее тех же крестов: модульность из коробки (что помимо прочего даёт высокую скорость компиляции), главный модуль программы является и файлом проекта (для простых и средних проектов сторонняя система сборки вообще не нужна).

hobbit ★★★★★
()
Ответ на: комментарий от AHAH

?

Угу, оно. Не знал, что его Dell купил. И когда я им пользовался, оно было заточено сугубо под Oracle.

hobbit ★★★★★
()
Ответ на: комментарий от zamtmn

так что либо транк, либо 2.0

Вот это, кстати, мешает нормальному пакетированию и попаданию в репозитории куда больше, чем нетривиальная сборка. Одно дело — ковыряться с собственно софтом, на это мотивации обычно хватает, но обновлять официальные зависимости в репах до транка никто не даст, а портировать отдельно rc'шку, интегрировать её в существующий FPC/Lazarus-стек ради одной программы — ну, такое. Я лично не готов.

Я понимаю, что в новых версиях появляются вкусные фичи, которые непременно хочется использовать, но лучше стараться не ломать совместимость со стабильными версиями зависимостей (тех, что в репах).

danfe
()
Ответ на: комментарий от hobbit

Ну, значит я не понимаю ничего в лазарусах и фрипаскалях, потому что у меня такой опыт - открываешь проект - что здесь есть главный модуль? Ни по названию, ни описания, ни порядка видимого, этот модуль положи туда, этот сюда, то подтяни, это покрути, а чего сразу всё разложить нельзя? Не, я избалованный симейками, там если и надо совать руки, то только для правки нарушенного порядка. В лазарусах я вообще порядка не вижу. И одно дело автору написать это всё, другое дело постороннему в этой каше разбираться.

Deleted
()
Ответ на: комментарий от Deleted

у меня такой опыт - открываешь проект - что здесь есть главный модуль?

Файл *.lpr (в Delphi был *.dpr). С точки зрения синтаксиса, это паскалевская Program, и в нём обычно в uses перечислены все остальные модули.

этот модуль положи туда, этот сюда, то подтяни, это покрути, а чего сразу всё разложить нельзя?

Может, тебе просто бардачный проект попался? (Или это конкретно про zcad?)

А уж какую кашу можно сотворить со cmake... Учитывая, что это всего лишь скриптовый язык с достаточно вольным синтаксисом. А хотелось бы для C++ иметь что-то декларативное и со строгой проверкой содержимого.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Да, конечно, в симейке можно мнооого наворотить, но обычно такое не попадается. А в лазарусовских проектах по пять *.lpr'ов лежат и ни один не называется ни по названию программы, ни какнить типа main.lpr, бардак. Честно скажу. не помню в чём загвоздка была именно с zcad'ом, извините, что тень на плетень навожу, претензии у меня к дильфяче-виндовому образу разработки, когда никакой внятной структуры, «написал как написал, всё равно никто сорцов не увидит», которая перетекла в лазарусовские проекты. Давненько я их собирал, но навряд ли что-то изменилось.

Deleted
()
Ответ на: комментарий от zamtmn

Но сейчасты конкретно используешь фичи нового лазаруса, или просто у тебя новейший и так получилось?

Deleted
()
Ответ на: комментарий от Deleted

Да, использую. В 2.0 эти фичи будут включены

zamtmn ★★
() автор топика
Ответ на: комментарий от mos

В том числе и на винде.

cross platform (Linux, Windows, MacOS X)

greenman ★★★★★
()

Написал пару скриптов для сборки zcadelectrotech (для zcad отличие только в вызове ./makeenv_zcad.sh вместо ./makeenv_zcadelectrotech.sh).

build_zcadelectrotech_with_fpc30x.sh:

lazbuild cad_source/other/AGraphLaz/lazarus/ag_vectors.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_attr.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_math.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_graph.lpk

lazbuild cad_source/other/uniqueinstance/uniqueinstance_package.lpk
lazbuild cad_source/other/rtl-generics_for_FPC304/rtl_generics.lpk

lazbuild cad_source/components/zebase/zebase.lpk
lazbuild cad_source/components/zcontainers/zcontainers.lpk
lazbuild cad_source/components/zcontrols/zcontrols.lpk
lazbuild cad_source/components/zmath/zmath.lpk
lazbuild cad_source/components/zscriptbase/zscriptbase.lpk
lazbuild cad_source/components/ztoolbars/ztoolbars.lpk
lazbuild cad_source/components/zundostack/zundostack.lpk
lazbuild cad_source/components/zscript/zscript.lpk
lazbuild cad_source/components/zobjectinspector/zobjectinspector.lpk

lazbuild cad_source/utils/typeexporter.lpi
pushd environment > /dev/null 2>&1
./makeenv_zcadelectrotech.sh
popd > /dev/null 2>&1

lazbuild --bm=gtk2 cad_source/zcad.lpi

build_zcadelectrotech_with_fpc32x.sh:

#!/bin/sh

lazbuild cad_source/other/AGraphLaz/lazarus/ag_vectors.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_attr.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_math.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_graph.lpk

lazbuild cad_source/other/uniqueinstance/uniqueinstance_package.lpk
lazbuild cad_source/other/rtl-generics_dummy/rtl_generics.lpk

lazbuild cad_source/components/zebase/zebase.lpk
lazbuild cad_source/components/zcontainers/zcontainers.lpk
lazbuild cad_source/components/zcontrols/zcontrols.lpk
lazbuild cad_source/components/zmath/zmath.lpk
lazbuild cad_source/components/zscriptbase/zscriptbase.lpk
lazbuild cad_source/components/ztoolbars/ztoolbars.lpk
lazbuild cad_source/components/zundostack/zundostack.lpk
lazbuild cad_source/components/zscript/zscript.lpk
lazbuild cad_source/components/zobjectinspector/zobjectinspector.lpk

lazbuild cad_source/utils/typeexporter.lpi
pushd environment > /dev/null 2>&1
./makeenv_zcadelectrotech.sh
popd > /dev/null 2>&1

lazbuild --bm=gtk2 cad_source/zcad.lpi

Это избавляет от установки компонентов в IDE, но пути к ним сохраняются в packagefiles.xml в папке профиля Lazarus.

В --bm= можно подставить win gtk2 gtk3 qt qt5 и по умолчанию Default.

Собранный zcad можно забрать из папки cad со всем содержимым.

Собирал с Lazarus 2.0.0 RC2 и fpc 3.2.0.

kickass
()
Ответ на: комментарий от zamtmn

можно и одним файлом обойтись, если есть путь к fpc в PATH и поправить немного:

fpc_ver=$(fpc -iV)
if [[ ${fpc_ver} == 3.2.* ]] || [[ ${fpc_ver} == 3.3.* ]]; then
    lazbuild cad_source/other/rtl-generics_dummy/rtl_generics.lpk
else
    lazbuild cad_source/other/rtl-generics_for_FPC304/rtl_generics.lpk
fi

kickass
()
Ответ на: комментарий от kickass

build_zcadelectrotech.sh:

#!/bin/sh

lazbuild cad_source/other/AGraphLaz/lazarus/ag_vectors.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_attr.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_math.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_graph.lpk

lazbuild cad_source/other/uniqueinstance/uniqueinstance_package.lpk

fpc_ver=$(fpc -iV)
if [[ ${fpc_ver} == 3.2.* ]] || [[ ${fpc_ver} == 3.3.* ]]; then
    lazbuild cad_source/other/rtl-generics_dummy/rtl_generics.lpk
else
    lazbuild cad_source/other/rtl-generics_for_FPC304/rtl_generics.lpk
fi

lazbuild cad_source/components/zebase/zebase.lpk
lazbuild cad_source/components/zcontainers/zcontainers.lpk
lazbuild cad_source/components/zcontrols/zcontrols.lpk
lazbuild cad_source/components/zmath/zmath.lpk
lazbuild cad_source/components/zscriptbase/zscriptbase.lpk
lazbuild cad_source/components/ztoolbars/ztoolbars.lpk
lazbuild cad_source/components/zundostack/zundostack.lpk
lazbuild cad_source/components/zscript/zscript.lpk
lazbuild cad_source/components/zobjectinspector/zobjectinspector.lpk

lazbuild cad_source/utils/typeexporter.lpi
pushd environment > /dev/null 2>&1
./makeenv_zcadelectrotech.sh
popd > /dev/null 2>&1

lazbuild --bm=gtk2 cad_source/zcad.lpi
build_zcad.sh:
#!/bin/sh

lazbuild cad_source/other/AGraphLaz/lazarus/ag_vectors.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_attr.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_math.lpk
lazbuild cad_source/other/AGraphLaz/lazarus/ag_graph.lpk

lazbuild cad_source/other/uniqueinstance/uniqueinstance_package.lpk

fpc_ver=$(fpc -iV)
if [[ ${fpc_ver} == 3.2.* ]] || [[ ${fpc_ver} == 3.3.* ]]; then
    lazbuild cad_source/other/rtl-generics_dummy/rtl_generics.lpk
else
    lazbuild cad_source/other/rtl-generics_for_FPC304/rtl_generics.lpk
fi

lazbuild cad_source/components/zebase/zebase.lpk
lazbuild cad_source/components/zcontainers/zcontainers.lpk
lazbuild cad_source/components/zcontrols/zcontrols.lpk
lazbuild cad_source/components/zmath/zmath.lpk
lazbuild cad_source/components/zscriptbase/zscriptbase.lpk
lazbuild cad_source/components/ztoolbars/ztoolbars.lpk
lazbuild cad_source/components/zundostack/zundostack.lpk
lazbuild cad_source/components/zscript/zscript.lpk
lazbuild cad_source/components/zobjectinspector/zobjectinspector.lpk

lazbuild cad_source/utils/typeexporter.lpi
pushd environment > /dev/null 2>&1
./makeenv_zcad.sh
popd > /dev/null 2>&1

lazbuild --bm=gtk2 cad_source/zcad.lpi

kickass
()
Ответ на: комментарий от kickass

А есть возможность получить fpc_ver от lazbuild`а? у меня зоопарк компиляторов, и в path лежит не тот что используется лазарем.

zamtmn ★★
() автор топика
Ответ на: комментарий от zamtmn

Нет, нельзя. Путь к компилятору лежит в профиле Lazarus ( что тоже неочевидно где, в хомяке или --pcp= ) в файле environmentoptions.xml <CompilerFilename Value=

kickass
()
Ответ на: комментарий от kickass

у меня тоже зоопарк из разных версий fpc и Lazarus, но в path ни одного нет. вся сборка на скриптах

вот пару из примеров:)

env-fpc30x-laz18x.sh

#!/bin/bash
#

FPC_VERSIONS="3.0.9 3.0.8 3.0.7 3.0.6 3.0.5 3.0.4 3.0.3 3.0.2 3.0.1 3.0.0"

export DEV_FPC_PATH=/home/public/programs/dev-fpc
export LAZARUS_INSTALL_PREFIX=${DEV_FPC_PATH}/lazarus/fixes_1_8
export LAZARUS_CONFIG_PATH=${DEV_FPC_PATH}/lazarus/configs/fixes_1_8
FPC_BIN_PATH=
FPC_MAN_PATH=
FPC_INSTALL_PREFIX=

for VER in ${FPC_VERSIONS}; do
	if [ -x ${DEV_FPC_PATH}/fpc/${VER}/bin/fpc ]; then
		export FPC_INSTALL_PREFIX=${DEV_FPC_PATH}/fpc/${VER}
		export FPC_BIN_PATH=${FPC_INSTALL_PREFIX}/bin
		export FPC_MAN_PATH=${FPC_INSTALL_PREFIX}/share/man

		export PATH=${LAZARUS_INSTALL_PREFIX}:${LAZARUS_INSTALL_PREFIX}/tools:${FPC_BIN_PATH}:${PATH}
		export LD_LIBRARY_PATH=${DEV_FPC_PATH}/fpc/lib/$(fpc -iTP)-$(fpc -iTO):${LD_LIBRARY_PATH}
		export MANPATH=${FPC_MAN_PATH}:${MANPATH}
		break
	fi
done;

startlazarus18x.sh:

#!/bin/sh
#

#cd $(dirname "$0")
#DEV_FPC_PATH=$(pwd)
DEV_FPC_PATH=$(dirname "$0")
source ${DEV_FPC_PATH}/env-fpc30x-laz18x.sh

#GTK_IM_MODULE=multipress
#QT_IM_MODULE=multipress
GTK_IM_MODULE=none
QT_IM_MODULE=none

export ${GTK_IM_MODULE} ${QT_IM_MODULE}

LOGFILE=${LAZARUS_INSTALL_PREFIX}/lazarus-session.log
${LAZARUS_INSTALL_PREFIX}/lazarus --pcp=${LAZARUS_CONFIG_PATH} "$@" > ${LOGFILE} 2>&1 &

build-with-fpc30x-laz18x.sh:

#!/bin/bash
#
cd /home/public/programs/dev-fpc
source ./env-fpc30x-laz18x.sh

NOGDB=1 ./build.sh \
--bootstrap=${FPC_BIN_PATH}/fpc \
--fpcbuild-svn-path=/run/media/${USER}/sdb4/repo/freepascal/fpcbuild/branches/fixes_3_0 \
--lazarus-svn-path=${LAZARUS_INSTALL_PREFIX} \
--pcp=${LAZARUS_CONFIG_PATH}

echo --primary-config-path=${LAZARUS_CONFIG_PATH}>${LAZARUS_INSTALL_PREFIX}/lazarus.cfg

Вот так и использую.

kickass
()
Ответ на: комментарий от kickass

Спасибо, не силен в скриптах((

zamtmn ★★
() автор топика
Ответ на: комментарий от zamtmn

А запустить на пустом проекте и выудить с выхлопа?

Не знаю, не пробовал.

у меня есть проект из тестов старых fpc_ver.lpr:

program fpc_ver;

begin
  Writeln ('Compiler version: ',{$I %FPCVERSION%});
end.
Если укоротить до
program fpc_ver;

begin
  Writeln ({$I %FPCVERSION%});
end.
то будет нужный выхлоп.

вот от него fpc_ver.lpi:

<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
  <ProjectOptions>
    <Version Value="10"/>
    <General>
      <Flags>
        <MainUnitHasCreateFormStatements Value="False"/>
        <MainUnitHasTitleStatement Value="False"/>
      </Flags>
      <SessionStorage Value="InProjectDir"/>
      <MainUnit Value="0"/>
      <Title Value="fpc_ver"/>
      <UseAppBundle Value="False"/>
      <ResourceType Value="res"/>
    </General>
    <BuildModes Count="1">
      <Item1 Name="Default" Default="True"/>
    </BuildModes>
    <PublishOptions>
      <Version Value="2"/>
    </PublishOptions>
    <RunParams>
      <local>
        <FormatVersion Value="1"/>
      </local>
    </RunParams>
    <Units Count="1">
      <Unit0>
        <Filename Value="fpc_ver.lpr"/>
        <IsPartOfProject Value="True"/>
      </Unit0>
    </Units>
  </ProjectOptions>
  <CompilerOptions>
    <Version Value="11"/>
    <Target>
      <Filename Value="fpc_ver"/>
    </Target>
    <SearchPaths>
      <IncludeFiles Value="$(ProjOutDir)"/>
      <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
    </SearchPaths>
    <Linking>
      <Debugging>
        <GenerateDebugInfo Value="False"/>
        <StripSymbols Value="True"/>
      </Debugging>
    </Linking>
  </CompilerOptions>
  <Debugging>
    <Exceptions Count="3">
      <Item1>
        <Name Value="EAbort"/>
      </Item1>
      <Item2>
        <Name Value="ECodetoolError"/>
      </Item2>
      <Item3>
        <Name Value="EFOpenError"/>
      </Item3>
    </Exceptions>
  </Debugging>
</CONFIG>

kickass
()
Ответ на: комментарий от kickass

А приветствие компилера при сборке:)

Free Pascal Compiler version 3.2.0-beta [2018/11/04] for x86_64
Copyright (c) 1993-2018 by Florian Klaempfl and others

kickass
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.