Carregar UserDict em um arquivo Postscript

0

Como faço para armazenar um dicionário do usuário em um arquivo e carregar o mesmo dicionário no início de outro arquivo? Isso deve dar o mesmo resultado como se o dicionário estivesse definido no topo do mesmo arquivo.

Mais explicitamente: escrevi um dicionário global ObjDict

!%PS-Adobe-3.0 EPSF-3.0

/ObjDict 30 dict def
ObjDict begin
...
/particle 
{  
     /posy exch def
     /posx exch def
     ...
} bind def
...
end %ObjDict

%%EOF

Agora eu quero chamar o procedimento partícula com as posições correspondentes posy posx de um arquivo diferente, que eu quero ser criado pelo meu programa de simulação. por exemplo:

!%PS-Adobe-3.0 EPSF-3.0

ObjDict begin
    0.5 0.5 particle
    0.1 0.0 particle
    0.3 0.3 particle
end %ObjDict

%%EOF

Existe uma maneira simples de informar ao segundo arquivo sobre o dicionário ObjDict definido no primeiro arquivo? Obrigado antecipadamente!

    
por S.Wag 09.11.2017 / 16:48

1 resposta

0

Esta pergunta provavelmente é mais adequada ao StackOverflow, mas é muito antiga para migrar. Também userdict é um dicionário específico definido pela linguagem postscript; outros dicionários são apenas chamados dicionários ou dicts .

Parece que você está tentando criar arquivos EPS (Encapsulated PostScript). Os arquivos EPS destinam-se a ser independentes. Portanto, eles não devem depender de dados de outro arquivo.

Para fazer esse PostScript regular, altere a primeira linha para

%!

ou

%!PS

Em seguida, você pode usar o operador run para executar o arquivo com o dicionário.

  • (nome do arquivo) executar -

Além disso, você não criou um dicionário "global", a menos que use true setglobal para alterar o modo de alocação para global. Mas também ser avisado que você não pode simplesmente usar def com um objeto alocado na memória global. Objetos na memória global não podem ser armazenados em dicionários ou matrizes que estão na memória local (como userdict ). Então, se você realmente precisa de um array global, você tem que colocar em globaldict .

currentglobal
  true setglobal
  globaldict /ObjDict 30 dict put
setglobal

Mas você provavelmente não precisa usar a memória global.

    
por 04.02.2018 / 22:36

Tags