• Este fórum é a tradução automática de www.cad3d.it/forum1 - a comunidade italiana de design. Vários termos não foram traduzidos corretamente.

Erro de macro para pontos de importação de txt

  • Criador do tópico Criador do tópico omar91
  • Start date Start date
  • Tags Tags
    macro

omar91

Guest
Olá a todos, meu nome é omar e eu sou novo no fórum. Eu sou um estudante de engenharia mecânica (graduação) e eu comecei a usar trabalhos sólidos.
não ter encontrado um comando para importar um conjunto de pontos, eu pesquisei na internet uma macro que me permitiu fazê-lo. Encontrei um que parecia funcionar e que trouxe de volta:

sub principal()

set swapp = aplicação. sldworks
set part = swapp.activedoc
swapp.activedoc.activeview.framestate = 1
dim skpoint como objeto

aberto "c:\users\omar\desktop\material thesis\voluta\linee\.txt" para entrada como #1
part.sketchmanager.insert3dsketch true
fazer enquanto não eof(1)
entrada #1, x, y, z
set skpoint = part.sketchmanager.createpoint(x, y, z)
loop


fim

Eu digo que pareceu porque os valores dos pontos são distorcidos, por exemplo, 45,888 torna-se 45888, 451,888444 torna-se 451888.444, ou seja, todos os números são aumentados de um fator 1000; além disso, para valores do terna "pequeno" (dizer abaixo do décimo, embora na realidade parece bastante aleatório), os números são lidos diretamente como 0 (para "resolvere" eu pensei dar valores de entrada x
para minhas habilidades tudo isso parece ser "mistério", alguém pode me dar explicações? Obrigado.
 
Olá.
a macro funciona bem e como você disse que você tem que dividir as coordenadas por 1000, isso porque o "call" para as abelhas "createpoint", requer os valores em metros, isso para tudo o que diz respeito à programação em trabalhos sólidos.
Eu sugiro que você sempre declare as variáveis certas para que o tipo de dados seja contido, em seu caso duplo (comma móvel dupla, é um tipo de número dado com dois decimais mínimos, por exemplo, volta 35 em 35.00).
As abelhas criadas exigem que você passe três coordenadas duplas, vba nem sempre, mas para você esta "tradução".

Eu sempre recomendo ao separador decimal, em seu caso o ". que deve coincidir com o definido nas configurações adicionais no país e idioma no painel de controle do Windows, caso contrário, o computador interpreta os números de forma diferente.

Deixei-me mudar a macro declarando de forma diferente a variável "swapp" e declarando x,y,z como duplo.
Além disso, Inseri-me para não ver a inserção gráfica das entidades na fase de criação dentro do esboço, essa velocidade exponencialmente a macro na fase de execução, especialmente quando os pontos se tornam muitos.
Fechei o desenho.

p.s.: como você pode saber, se na frente de tudo que você escreve você colocar um ' (apostrophe), a linha é dito para ser comentado e aparece em verde e não é lido na fase de execução.

Bom dia.
Jurisprudência

aqui está o código atualizado

dim x como duplo
dim y como duplo
dim z como duplo
dim swapp como sldworks. sldworks
dim parte como sldworks.modeldoc2
sub principal()

set swapp = aplicação. sldworks
set part = swapp.activedoc
swapp.activedoc.activeview.framestate = 1

Dim skpoint como sldworks. esboço

aberto "c:\prova.txt" para entrada como #1
part.sketchmanager.insert3dsketch true
"para congelar os gráficos durante a inserção, tudo é muito mais rápido
part.sketchmanager.addtodb = true

fazer enquanto não eof(1)
entrada #1, x, y, z
set skpoint = part.sketchmanager.createpoint (x / 1000, y / 1000, z / 1000)
loop

"Inserção gráfica privada
part.sketchmanager.addtodb = false
' Eu fecho o esboço
part.sketchmanager.insert3dsketch false
fim
 
Obrigado, jenuary! provavelmente quando eu tentei dividir por 1000 na macro eu tinha algo errado e então retornou 0.
Agradeço também as melhorias que fizeram e que vou tentar agora. em meu caso específico (vamos dizer o mais urgente, para a tese) o número de pontos é limitado (algumas txt de cerca de 50 pontos), mas por curiosidade eu tinha tentado também com um txt contendo um número muito maior de pontos e, de fato, depois de um tempo sw estava quebrando.
 

Estatísticas do fórum

Tópicos
58,521
Mensagens
499,056
Membros
104,110
Último membro
ChristianR

Membros online

Nenhum membro online agora.
Voltar
Topo