15.680 linhas, 800.053 caracteres - esse é exatamente o tamanho hoje em dia que meu script foi criado no Altium Designer - um sistema para o desenvolvimento de placas de circuito impresso.

Iniciar
Em 2014, trabalhei como engenheiro de design, desenvolvi placas de circuito. Aceitação militar, preparação da documentação completa do projeto (CD), controle padrão da ESKD - tudo isso deixa o software australiano-chinês-americano, que é o sistema Altium. Como são estranhos aos GOSTs soviéticos, instruções e padrões antigos para o design de desenhos. Às vezes, um funcionário do nosso departamento passava um turno inteiro para que o desenho do quadro satisfizesse todas as regras e regulamentos para a criação de um CD.
Agora é feito em cerca de 10 minutos.
Decidi que você pode simplificar a vida de si mesmo e de mais uma dúzia de pessoas no trabalho. Comecei a descobrir, descobri que havia uma API aberta, comecei a ver exemplos e pronto, meu primeiro script para o Altium já está traçando uma linha no quadro - não há limite para a alegria.
Lentamente, pouco a pouco, ampliei meus conhecimentos de programação, já que antes não havia encontrado muita coisa. Na universidade, lembro que o pêndulo escrevia por um semestre e isso é tudo.
Primeira interface
Chegou ao ponto em que a interface precisava ser feita, no começo era assim:

Esta versão já sabia desenhar dimensões, textos explicativos com setas.
Deve-se entender que não havia explicação especial na documentação, ninguém tinha experiência no uso de funções da API, apenas alguns
scripts nos
scripts github e altium padrão. Descrição no wiki até hoje da categoria:
SetState_Enabled method (IPCB_Primitive interface) Syntax Procedure SetState_Enabled (Value : Boolean); Description Example See also IPCB_Primitive interface
E a descrição completa, embora tenha sido possível determinar como funciona por tentativa e erro.
Cada vez que introduzir novas funções era um prazer, porque quando você vê como as pessoas usam seu trabalho e tudo funciona, não é por isso que os programas são criados. Nesta fase, o tempo para a elaboração de desenhos já foi reduzido pela metade.
Desenvolvimento
A próxima versão já era assim:

Ela já sabia como inserir folhas dentro do quadro, hachurar polígonos para um desenho, inserir uma grade e outros elementos para um desenho.
O principal problema era que o ambiente de desenvolvimento Altium é um sistema para o desenvolvimento de placas de circuito. Ele não possui ferramentas suficientes para projetar um CD, e ainda mais pelos padrões russos. Basicamente, o script expandiu o kit de ferramentas padrão do ambiente para que você também pudesse desenvolver um CD e imprimi-lo.
Por exemplo, implementei a inserção de folhas de diferentes formatos diretamente no código, não criei arquivos separados. Usei tabelas do Excel para isso, inseri manualmente o formato no arquivo pcb, realcei todas as propriedades de todas as linhas, suas coordenadas, larguras, coordenadas de texto, etc. e colocar tudo isso em uma matriz regular. Em seguida, o script em ordem criou cada uma das linhas de formato no próprio arquivo do quadro. E assim para cada folha de todos os formatos.
Nossos dias
Agora o programa fica assim:


Eu nunca sou designer, às vezes tinha que esculpir botões em qualquer lugar, olhava para os sistemas CAD mais famosos, como são feitos os menus, configurações, botões suspensos e assim por diante.
Aqui está um exemplo do próprio script Total a bordo:
- Mais de 50 configurações, salvando-as dentro do arquivo do quadro
- Atualizando desenhos ao fazer alterações no quadro
- Inserir automaticamente vistas no centro das folhas
- Geração de PDF com um botão
- Edição de cotas com recálculo de desvios em tempo real
- Malha radial, malha de 4 lados, riscos, passo personalizável
- Salvando miniaturas no formato txt para uso futuro
e muito mais
Muitos nervos, força, paciência, noites sem dormir - passados. Fazer desenhos no trabalho não tem preço.
O roteiro foi escrito por mim sozinho pelo quarto ano, e sem o uso de um gita, temas sombrios e outras coisas). Apenas pascal, apenas hardcore. Obrigado por folhear até o fim, ficarei feliz em comunicar!
Um exemplo de desenho desenhado dentro de uma PCBVersão do programa para tentar