비밀번호를 잊으셨나요?

비밀번호를 잊으셨나요? 비밀번호를 재설정하려면 이메일 주소를 입력해주세요.

계정이 있나요? 로그인

You must login to ask a question.

비밀번호를 잊으셨나요?

아직 계정이 없으신가요? 회원가입 하기

해당 질문을 신고하는 이유를 간단히 입력해주세요.

해당 답변을 신고하는 이유를 간단히 입력해주세요.

해당 유저를 신고하는 이유를 간단히 입력해주세요.

로그인회원가입

고캐드 – 캐드(CAD) 정보의 중심

고캐드 – 캐드(CAD) 정보의 중심 Logo 고캐드 – 캐드(CAD) 정보의 중심 Logo

고캐드 – 캐드(CAD) 정보의 중심 Navigation

  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
검색
질문하기

Mobile menu

닫기
질문하기
  • 홈
  • 카테고리
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 투표
  • 커뮤니티 그룹
  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
홈/ 질문/Q 112058
다음
Lv.0
등록일: 2019-12-282019-12-28T17:49:08+09:00 2019-12-28T17:49:08+09:00카테고리: AutoCAD & CADian

세점 포물선 그리기 VBA

2차 포물선 그리기 VBA입니다.

(이미지 추가가 여의치 않아 블로그 링크합니다.)
https://blog.naver.com/kimdhj77/221752345973
코드입니다.
Sub para()
    Dim Pnt1, Pnt2, Pnt3 As Variant ‘3points for parabola
    Pnt1 = ThisDrawing.Utility.GetPoint(, “1st Point”)
    Pnt2 = ThisDrawing.Utility.GetPoint(, “2nd Point”)
    Pnt3 = ThisDrawing.Utility.GetPoint(, “3rd Point”)
    Dim a, b, c As Double
    Dim M11, M12, M13, M21, M22, M23, M31, M32, M33 As Double 
    Dim x1, x2, x3, y1, y2, y3, plusx, plusy As Double
    plusx = Pnt1(0) + Pnt3(0)
    plusy = Pnt1(1) + Pnt3(1)
    x1 = Pnt1(0) + plusx: x2 = Pnt2(0) + plusx: x3 = Pnt3(0) + plusx
    y1 = Pnt1(1) + plusy: y2 = Pnt2(1) + plusy: y3 = Pnt3(1) + plusy
    M11 = 1 / (x1 ^ 2 – x1 * x2 – x1 * x3 + x2 * x3)
    M12 = 1 / (x2 ^ 2 – x1 * x2 + x1 * x3 – x2 * x3)
    M13 = 1 / (x3 ^ 2 + x1 * x2 – x1 * x3 – x2 * x3)
    M21 = -(x2 + x3) / (x1 ^ 2 – x1 * x2 – x1 * x3 + x2 * x3)
    M22 = -(x1 + x3) / (x2 ^ 2 – x1 * x2 + x1 * x3 – x2 * x3)
    M23 = -(x1 + x2) / (x3 ^ 2 + x1 * x2 – x1 * x3 – x2 * x3)
    M31 = -(x1 * x3) * (x2 ^ 2 – x2 * x3) / (x1 ^ 2 – x1 * x3) / (x2 ^ 2 – x1 * x2 + x1 * x3 – x2 * x3)
    M32 = (x1 * x3) / (x2 ^ 2 – x1 * x2 + x1 * x3 – x2 * x3)
    M33 = -(x1 * x3) * (x2 ^ 2 – x1 * x2) / (x3 ^ 2 – x1 * x3) / (x2 ^ 2 – x1 * x2 + x1 * x3 – x2 * x3)
    a = M11 * y1 + M12 * y2 + M13 * y3
    b = M21 * y1 + M22 * y2 + M23 * y3
    c = M31 * y1 + M32 * y2 + M33 * y3
    Dim n As Integer ‘등분’
        n = InputBox(“What is the number of divided parabola?”)
    Dim interval As Double
        interval = (x3 – x1) / n
    Dim polyPnt() As Double
    ReDim polyPnt(2 * n + 1) As Double
    Dim i As Integer
    For i = 0 To n
        polyPnt(i * 2) = x1 + interval * i
        polyPnt(i * 2 + 1) = a * polyPnt(i * 2) ^ 2 + b * polyPnt(i * 2) + c
    Next i
    Dim Opnt1(2) As Double
    Dim Opnt2(2) As Double
        Opnt1(0) = 0: Opnt1(1) = 0: Opnt1(2) = 0
        Opnt2(0) = -plusx: Opnt2(1) = -plusy: Opnt2(2) = 0
    Dim polyObj As AcadLWPolyline
    Set polyObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(polyPnt)
        polyObj.Move Opnt1, Opnt2
End Sub
  • 0
  • 92 조회
공유
  • Facebook

    관련 있는 질문들

    • 캐드2022 레이어 그룹 분류시 레이어 드래그 오류
    • 전기도면 나사모양의 폴리선을 그릴수 있나요?
    • 캐드, zw캐드 와이프아웃 박스가 너무 많이 생겨요. 폴리선 박스가 중첩으로 많이 생겨요
    • 오토캐드 2016 맞춤법 검사기 끄는 방법 아시나요

    Sidebar

    질문하기
    공지사항

    • AI CAD의 미래! 캐디안 2025 1+1 프로모션 안내 2025-05-14

    Adv 234x60

    aalan

    Adv 234x60

    aalan

    Adv 120x600

    aalan

    Explore

    • 홈
    • 카테고리
      • AutoCAD & CADian
      • Inventor & Solidworks
      • Revit & ArchiCAD
      • 자유질문
      • 기타
    • 투표
    • 커뮤니티 그룹
    aalan

    Footer

    Support

    • 회사 및 서비스 소개
    • 자주 묻는 질문
    • 문의하기

    Guide

    • 제휴/협업 안내
    • 광고 서비스 안내

    Policy

    • 서비스 이용약관
    • 개인정보 처리방침
    • 광고성 정보 수신 동의

    Contents

    • 고밍스토리
    • 리습 시리즈

    정소프트 | 사업자등록번호 : 677-40-00198 | 대표 : 정은숙 | 이메일 : gocad.manager@gmail.com
    주소 : 서울특별시 강서구 양천로 400-12, 6층 614,615,617호(등촌동, 더리브골드타워)
    Copyright. 2012-2024 GOCAD All rights reserved