Aller au contenu

Réaliser du Calorifuge


Messages recommandés

Posté(e)

Bonjour à toutes et à tous

 

Serait-il possible de réaliser 2 commandes.

Une pour les gaines circulaire et l'autre pour les gaine rectangulaire.

Ces commade seraient de réaliser partiellement du calorifuge d'épaisseur différent sur les gaines.

Je voudrait qu'il est

<1er Point>:

<2ème point>:

Epaisseur du Calorifuge:

 

J'espère que j'ai été clair

 

Merçi d'avance a tous

 

Cordialement

 

@+

 

[Edité le 28/4/2009 par Chris24]

Posté(e)

Bonjour à toutes et à tous

 

Je voudrait qu'il est

1er Point:

2ème point:

Epaisseur du Calorifuge:

 

Voilà, à quoi je voudrai que les commandes ressemble.

 

 

Merçi d'avance a tous pour votre disponibilité

 

Cordialement

 

@+

  • 2 semaines après...
Posté(e)

Ici, le premier problème n'est pas la programmation mais la facilité de trouver un algorithme avec les arguments que tu souhaites.

 

Je m'explique, je ne vois pas comment en se repérant de manière géométrique/mathématiquement il est possible de donner un résultat avec les points que tu fournis à autocad.

 

Je pense que la manière la plus simple c'est de considérer les points le long de l'axe. Ça fait longtemps que je ne me suis pas pencher sur un problème graphique (problème vraiment très compliquer si l'on ne programme pas à plein temps et si on est une buse comme moi on math matricielle) :

 

Je te propose donc un bout du code vraiment brute sans commentaire, mais je pourrais te fournir tous les explications que tu souhaites :

 

Sub PVC()


Dim pt As Variant
Dim pt1 As Variant
Dim ligne As acadline
Dim ptAvt As Variant

Dim teta As Double
Dim deltX As Double
Dim strReduc As String
Dim strCoude As String
Dim blockObj As AcadBlockReference
Dim strpropo As String
Dim keywordList As String
Dim ptgarde As Variant
Dim offsetvar As Variant
Dim VarpinsTr As Variant
Dim strMonG As String
Dim strEntree As String
Dim strTaille_reduc As String
Dim strCalquecourant As String


strCalquecourant = ThisDrawing.ActiveLayer.Name
calque_units
sngDiametre = ThisDrawing.Utility.GetReal("sngDiametre du pvc en mm : ")
sngDiametre = sngDiametre * coef

pt = ThisDrawing.Utility.GetPoint(, "Point de départ :")
'garder ce pt
ptgarde = pt


Do

   pt1 = ThisDrawing.Utility.GetPoint(pt, "Extrémité :")
   Set ligne = ThisDrawing.ModelSpace.AddLine(pt, pt1)
   
   offsetvar = ligne.Offset(sngDiametre / 2)
   offsetvar = ligne.Offset(-sngDiametre / 2)
   
   With ligne
   .layer = actlayer & "-A"
   End With
   On Error Resume Next
   'faire un getpoint mais avec choix du texte et si le getpoint echoue faire une
'selection du texte sinon ajouter au segment la ligne
   
   'Définition des mots-clés
   
   keywordList = "Keyword1 Keyword2"
   ThisDrawing.Utility.InitializeUserInput 128, keywordList
   
   
   pt = ThisDrawing.Utility.GetPoint(pt1, "té Droite/té Gauche/Monter/Descendre/Texte diamètre/Clore")
   
   'récupère ce que l'itulisateur a rentré grâce à 'on error resume next
   strEntree = ThisDrawing.Utility.GetInput
   strMonG = VBA.Left(ThisDrawing.Utility.GetInput, 1)
   
   Select Case Err.Numbertu veux 
   
   Case "-2147352567" 'l'utilisateur à fait "Échap"
   On Error GoTo 0
   'le calque courant avant la commande et rendu actif
   ThisDrawing.ActiveLayer = ThisDrawing.layers(strCalquecourant)
   'l'utilisateur est informé  de son annulation
   ThisDrawing.Utility.Prompt " Annulée par l'utilisateur."
   'le programme est arrété
   Exit Sub
   
   Case "-2145320928"
   'l'utilisateur a entré un mot clé
   On Error GoTo 0
   'Debug.Print strMonG & "strMonG"
   'test du mot clé
   Select Case strMonG
   Case ""
   Debug.Print "l'utilisateur vient de rentrer un espace"
   Exit Sub
   Case "d", "D"
   'insérer une culotte à direction à droite
   ThisDrawing.Utility.Prompt "insérer une culotte à direction à droite" & teta
   Exit Sub
   Case "g", "G"
   'insérer une culotte à direction à gauche
   ThisDrawing.Utility.Prompt "insérer une culotte à direction à gauche" & teta
   
   
   
   
   
   
   '**************
   
   strReduc = "nettoy_culotte_bt14_back.dwg"
   
   Set blockObj = ThisDrawing.ModelSpace.InsertBlock(pt1, strReduc, 1#, 1#, 1#, teta)
   
   
   Exit Sub
   
   Case "c", "C"
   strpropo = ThisDrawing.Utility.GetString(False, "Monter")
   Select Case strpropo
   Case "m", "M"
   Insertion_coude90_montant
   End Select
   
   Case "r", "R"
   
   'lancer la funciton ou sub pour faire une réduction
   'Insertion_reduction
   'faire procédure pour le calcul du dblModule
   
   strTaille_reduc = ThisDrawing.Utility.GetString(False, "donner le diamètre réduit : ")
   
   Dim dblModule As Double
   dblModule = Sqr((pt1(0) - pt(0)) ^ 2 + (pt1(1) - pt(1)) ^ 2)
   
   deltX = pt1(0) - pt(0)
   Debug.Print deltX
   Dim deltY As Double
   deltY = pt1(1) - pt(1)
   Debug.Print deltY
   
   If deltX = 0 And deltY > 0 Then
   teta = ArcCos(deltX / dblModule)
   End If
   
   If deltX = 0 And deltY < 0 Then
   teta = -ArcCos(deltX / dblModule)
   End If
   
   If deltX > 0 And deltY > 0 Then
   teta = ArcCos(deltX / dblModule)
   End If
   
   If deltX < 0 And deltY > 0 Then
   teta = ArcCos(deltX / dblModule)
   End If
   
   If deltX > 0 And deltY < 0 Then
   teta = -ArcCos(deltX / dblModule)
   End If
   
   If deltX < 0 And deltY = 0 Then
   teta = -ArcCos(deltX / dblModule)
   End If
   
   If deltX < 0 And deltY < 0 Then
   teta = -ArcCos(deltX / dblModule)
   End If
   
   
   '**************
   
   strReduc = "Rcc_" & sngDiametre & "-" & strTaille_reduc & ".dwg"
   
   Set blockObj = ThisDrawing.ModelSpace.InsertBlock(pt1, strReduc, 1#, 1#, 1#, teta)
   'blockObj.GetXData =
   If blockObj.ObjectName = "AcDbBlockReference" Then
   
   'enregistrer l'entité en tant que IAcadBlockReference2
   Dim oBkRef As IAcadBlockReference
   Dim varAttributes As Variant
   
   'On Error GoTo gestion
   Set oBkRef = blockObj
   Debug.Print oBkRef.Name
   On Error GoTo 0
   
   If oBkRef.HasAttributes Then 'hasattribut
   
   'Debug.Print oBkRef.Name
   varAttributes = oBkRef.GetAttributes
   Dim n As Integer
   
   'pour chaque attribut
   For n = LBound(varAttributes) To UBound(varAttributes)
   'si l'étiquette de l'attribut est coordonnees
   If varAttributes(n).TagString = "HAUTEUR_TRAPEZE" Then
   Dim sngLongueur As Single
   Debug.Print varAttributes(n).TextString
   'sngLongueur =
   End If 'varAttributes(n).TagString = "HAUTEUR_TRAPEZE" Then
   Next n 'pour chaque attribut
   End If 'hasattribut
   
   End If 'blockObj.ObjectName = "AcDbBlockReference" Then
   
   pt(1) = pt1(1) + sngLongueur * Sin(teta)
   pt(0) = pt1(0) + sngLongueur * Cos(teta)
   'pt = pt1
   sngDiametre = strTaille_reduc
   sngDiametre = sngDiametre * coef
   
   
   Case Else
   
   
   
   End Select
   
   Case Else
   ptgarde = pt
   
   
   
   deltX = pt1(0) - pt(0)
   
   
   deltY = pt1(1) - pt(1)
   'Debug.Print deltY
   
   dblModule = Sqr((pt1(0) - pt(0)) ^ 2 + (pt1(1) - pt(1)) ^ 2)
   
   If deltX = 0 And deltY > 0 Then
   teta = ArcCos(deltX / dblModule)
   End If
   
   If deltX = 0 And deltY < 0 Then
   teta = -ArcCos(deltX / dblModule)
   End If
   
   If deltX > 0 And deltY > 0 Then
   teta = ArcCos(deltX / dblModule)
   End If
   
   If deltX < 0 And deltY > 0 Then
   teta = ArcCos(deltX / dblModule)
   End If
   
   If deltX > 0 And deltY < 0 Then
   teta = -ArcCos(deltX / dblModule)
   End If
   
   If deltX < 0 And deltY = 0 Then
   teta = -ArcCos(deltX / dblModule)
   End If
   
   If deltX < 0 And deltY < 0 Then
   teta = -ArcCos(deltX / dblModule)
   End If
   
   
   Dim strTeta As String
   
   strTeta = teta
   
   If VBA.Left(strTeta, 15) = "1,5707963267949" Or VBA.Left(strTeta, 15) = "-1,570796326794" Then
   strCoude = "C-90d_" & sngDiametre & "_c.dwg"
   End If
   
   Set blockObj = ThisDrawing.ModelSpace.InsertBlock(pt1, strCoude, 1#, 1#, 1#, teta)
   
   Set ligne = ThisDrawing.ModelSpace.AddLine(pt1, pt)
   
   offsetvar = ligne.Offset(sngDiametre / 2)
   offsetvar = ligne.Offset(-sngDiametre / 2)
   
   With ligne
   .layer = actlayer & "-A"
   End With
   
   
   'calculer langle entre la droite tracée et le point pt
   'si l'angle est remarquable, insérer l coude qu'il faut pour le diamètre et l'angle
   
   'str = "C-" & sngAngle & "d_" & sngDiametre & "_c"
   
   
   End Select

Loop Until strReduc = "n"



End Sub

 

 

Je fais cette demande, mais normalement, je ne suis pas du genre à réclamer :

 

Comme tu peux le voir, on bosse plus ou moins dans le même domaine, j'avais commencé ce code pour dessiner de la gaine galva, des réseaux d'évacuation PVC...etc ça n'a pas pu aboutir car j'ai eu beaucoup d'autre occupation et surtout parce que je me suis découragé devant le problème de l'orientation secondaire des blocs pour les coudes, culotte etc... Si jamais, tu as l'intention de poursuivre un tel projet, tu pourras compter sur moi pour l'aide mais j'aimerais que ton code soit libre comme ceux que j'ai posté afin que les vendeurs de logiciel souvent mal fini arrête de VOLER de l'argent au BE. Merci de ta compréhension.

 

[Edité le 20/5/2009 par sechanbask]

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Salut Sechanbask.

 

Et merçi pour ce code.

 

Malheuresement je ne suis pas un programmeur, et comme tu le dit si bien, il est vrai que les logiciels sont relativement cher. Et si un jour je le devients mes codes seront libres.

 

Et encore merçi, je vais l' essayer.

 

@+

 

 

Posté(e)

Bonjour à toutes et à tous.

 

Salut sechanbask.

 

Excuse moi de te répondre en retard, j'aimerais que tu me donne la marche à suivre pour ce code,

 

Merçi encore

 

Cordialement

 

@+

Posté(e)

tu veux la marche à suivre pour faire ton code en utilisant le mien ?

 

Si c'est le cas, il faut avant toute chose définir les besoins :

quelle est la ou les versions d'autocad ? si plusieurs faire un teste sur les versions (si tu as une 2007, je ne peux pas insérer de blocs)

est-ce les utilisateurs travaillent dans les SCU ou toujours dans le SCG ?

pour un même diamètre de tube ou de gaine, la taille du calorifuge est-elle toujours la même ? si non, il faut demander à l'utilisateur de la saisir ou lui demander de choisi dans un tableau...

saisi dynamiques des points ? oui mais dans quel ordre ? je vois ça comme ça point 1 = debut du calo sur axe, point 2 = fin du calo sur l'axe, point 3 = bord de la gaine.

 

avec VBA beaucoup de chose sont possibles et la prise de tête en fait parti si on ne définit pas le sens des choses.

 

Défini tes envies en commençant par tes besoins les plus primaires.

 

P.S. tu as testé mon code, tu as compris ou pas, tu arrives à le faire fonctionner ? Si tu veux de l'aide vu le peut de temps que j'ai en ce moment, faut pas hésiter, et être réactif. On est sur internet, la timidité n'existe pas pas. Alors soit ça bouge, ça c'est mort. Car j'ai de l'huile sur le feu avec le nettoyeur, avec la charte graphique de mon BE, et en plus je suis en train de monter une association (voir ma signature)...

Si tu veux t'investir dans le calorifuge, et m'y faire participer, faut que ça bouge !! si oui contacte moi par MP je te filerai mon adresse persos pour que nos échange soient plus vifs.

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

  • 2 semaines après...
Posté(e)

Bonjour à toutes et à tous.

 

Salut sechanbask.

 

Il semble que tu soit une personne trés occupé, je vais dons essayer d'être bref et réctif et de ne pas tros te faire perdre ton temps.

 

Ma version d'AutoCAD est la 2004, la marche à suivre que je souhaité conserne ton code, je n'arrive pas à le faire fonctionner. J'ai plusieurs messages d'erreurs:

Erreur de compilation: Sub ou Function non défini. Ces erreurs concernent "calque_units"; "Insertion_coude90_montant" et "ArcCos", je les aient donc définie avec Dim... As ..., ensuite quand j'ai sur ma ligne de Commande d'AutoCAD

Commande: sngDiametre du pvc en mm :

Commande: point de départ :

Commande: Extrémité :

J'ai se message d'erreur: Erreur d'execution '-2145386476 (80200014)': clé introuvable.

j'ai donc cliqué sur débogage, je tombe sur:

.Layer = actlayer & "-A".

Je ne suis pas du tous doué en VBA.

 

Consernant ma commande pour le calorifuge, je souhaite que l'utilisateur est 3 options: mettre un 1er point sur la gaine, mettre un 2ème point sur la gaine et le choix de saisir l'épaisseur du calorifuge.

Je voudrait qu'il est

Commande:1er Point:

Commande: 2ème point:

Commande: Epaisseur du Calorifuge:

 

Comme illustré sur les captures d'écran que j'ai posté.

 

Si tu connait le Logiciel Autogaine, il existe une commade de se type.

 

En espérant avoir été clair. et merçi de ta disponibilité.

 

Cordialement.

 

PS: Concernant le nettoyeur, j'ai fait quelques essais, je trouve se code intéressant. Par contre le dernier lien "http://cjoint/?bmxWsT3U38" ne fonctionne pas.

 

Posté(e)

Je vais surement dire une ânerie mais de mémoire (ça fais quelques années), ce que demande Chris24 (dans la réponse n°3) est exactement ce que réalise Fisacad.

 

Dans FISACAD, tu choisissais, le type de conduit (gaine carrée ou circulaire), l'épaisseur du calo ensuite tu cliquais les 2 extrémités opposée du tube ou de la gaine et le logiciel coupais le conduit en réalisant le calo tels que réalisé dans les images de la réponse n°3.

 

C'est donc faisable mais comment, je suis absolument pas calé pour cela ???

Raph.

Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !

Posté(e)

je connais un peu AUTOGAINE, beaucoup trop FISACAD (plein de bugs)

 

je vois ce que tu veux dire, mais il faut forcément que tu indiques l'épaisseur du calo + la dimension du conduit sinon je ne sais pas faire le "décalage" donc il faut soit demande à l'utilisateur de donnée la dimension de son tuyau soit lui demander de pointer un 3ième point entre le bord du tube...

 

 

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Bonjour à tous,

Dans la demande chris24, je pense qu'il souhaite ajouter du calorifuge à un tuyau existant.

 

Dans cette hypothèse, est-ce que tu n'obtiens pas la valeur du diamètre par la différence entre les valeurs selon l'axe des y des points 1 et 2?

 

C'est ce qui est possible dans Autofluid. En effet, AutoFluid demande les deux points sur la diagonale, d'un tube ou d'une gaine déjà représenté; il oriente alors le scu pour obetnir celui-ci toujours sur l'axe, et selon la direction de celui-ci. La différence entre la valeur y des des deux points est alors récupérable, dans le nouveau scu. Le diamètre est alors connu, idem pour la largeur d'une gaine rectangulaire.

 

J'ai cru comprendre que la manipulation de coordonnées sous un nouveau scu est facile en lisp, mais je sèche un peu sur le sujet en VBA.

 

Hé!Hé! Moi aussi j'essaye de faire ma propre version d'AutoFluid. Chapeau au développeur Laurent M.

 

Au sujet des coûts des applications, sans polémique aucune, je pense qu'il s'agit de la politique commerciale des éditeurs, plus que l'appétit des développeurs. Regardons le temps que nous passons à développer nos routines. Quand on veut en vivre, à plein temps, cela se chiffre vite.

 

Bon courage à tous

Michel D.

Posté(e)

Sechanbask,

Peux-tu me préciser la valeur de la variable "coef" de ton code, je ne la trouve pas. A quoi sert-elle?

Merci par avance pour ta réponse.

Michel D.

Posté(e)

salut,

 

Le code est vraiment sale... depuis que j'ai comencé ce code, j'ai compris beaucoup de chose (et vaut mieux vous aller me dire)

 

le code doit être scindé en mini procédure pour limiter les problème de maintenance.

 

 

 

 

MaDXP > coef est une variable qui me sert pour mettre à l'échelle le réseau en fonction des unités de plan. comme ça l'utilisateur donne toujours au logiciel des dimension en mm...

 

Si j'ai un pu de temps entre mon apprentissage de GNU/Linux et les grosses modifications de mon nettoyeur, je reviendrai dessus pour faire le ménage...

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Bonjour à toutes et à tous

 

Merçi MaDXP pour les explications données pour sechanbask, je ne pense pas que j'aurais été plus clair sans connaitre les routines AutoLISP.

 

Prend ton temps sechanbask, je ne suis pas pressé.

 

Merçi encore

 

@+

 

 

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité