Đến nội dung


Hình ảnh
- - - - -

Hỏi về code VBA gióng chân Dim


  • Please log in to reply
6 replies to this topic

#1 ptlong04x1

ptlong04x1

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 26 August 2011 - 01:52 PM

Mình thấy trên DĐ có rất nhiều lisp dùng để gióng chân Dim, mình thắc mắc về thuật toán này nếu dùng VBA (đọc lisp thấy không hiểu??? :blink:). Các bạn có thể cho mình một ví dụ gióng chân Dim bằng code VBA không? Xin cảm ơn!
  • 0

#2 phantuhuong

phantuhuong

    biết dimstyle

  • Moderator
  • PipPipPipPipPip
  • 383 Bài viết
Điểm đánh giá: 200 (khá)

Đã gửi 27 August 2011 - 03:12 PM

Một ví dụ bằng VBA để tạo Dim đây:

Sub Example_AddDimAligned()
' This example creates an aligned dimension in model space.

Dim dimObj As AcadDimAligned
Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
Dim location(0 To 2) As Double

' Define the dimension
point1(0) = 5#: point1(1) = 5#: point1(2) = 0#
point2(0) = 10#: point2(1) = 5#: point2(2) = 0#
location(0) = 5#: location(1) = 7#: location(2) = 0#

' Create an aligned dimension object in model space
Set dimObj = ThisDrawing.ModelSpace.AddDimAligned(point1, point2, location)
ZoomAll
End Sub

  • 1
Bồi dưỡng Excel & VBA cho các đơn vị ở Hà Nội và khu vực lân cận

Từng bước loại đồ Tàu ra khỏi cuộc sống!


#3 ptlong04x1

ptlong04x1

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 28 August 2011 - 09:32 AM

Một ví dụ bằng VBA để tạo Dim đây:

Sub Example_AddDimAligned()
' This example creates an aligned dimension in model space.

Dim dimObj As AcadDimAligned
Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
Dim location(0 To 2) As Double

' Define the dimension
point1(0) = 5#: point1(1) = 5#: point1(2) = 0#
point2(0) = 10#: point2(1) = 5#: point2(2) = 0#
location(0) = 5#: location(1) = 7#: location(2) = 0#

' Create an aligned dimension object in model space
Set dimObj = ThisDrawing.ModelSpace.AddDimAligned(point1, point2, location)
ZoomAll
End Sub


Dạ ý em không phải là vậy. Em muốn tìm hiểu thuật toán cắt chân dim (cut dim) bằng VBA. Đã có rất nhiều lisp trên diễn đàn thực hiện việc này nhưng e muốn thực hiện nó bằng VBA vì không biết chút gì về lisp.
  • 0

#4 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 28 August 2011 - 02:07 PM

Dạ ý em không phải là vậy. Em muốn tìm hiểu thuật toán cắt chân dim (cut dim) bằng VBA. Đã có rất nhiều lisp trên diễn đàn thực hiện việc này nhưng e muốn thực hiện nó bằng VBA vì không biết chút gì về lisp.

Với thằng Dimrotated không thể nào lấy được toạ độ chân dim nên hiện tại chưa nghĩ được ra cách nào dóng chân Dim bằng code vba.
Với thằng dimaligned có thể lấy được toạ độ chân dim nhưng code rắc rói vì phải lấy hướng của dim với lại loại này ít dùng.
  • 2
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#5 ptlong04x1

ptlong04x1

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 28 August 2011 - 09:11 PM

Với thằng Dimrotated không thể nào lấy được toạ độ chân dim nên hiện tại chưa nghĩ được ra cách nào dóng chân Dim bằng code vba.
Với thằng dimaligned có thể lấy được toạ độ chân dim nhưng code rắc rói vì phải lấy hướng của dim với lại loại này ít dùng.


Mình đã làm thử và cũng gặp các vướng mắc như bạn nói. Không hiểu nguyên lý làm việc trong lisp cắt chân Dim thì sao nhỉ? Bạn nào giải thích giúp mình với!
  • 0

#6 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5680 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 28 August 2011 - 09:40 PM

Vì lisp cung cấp khả năng đọc entity record của Dimension, trong đó có các mã dxf 10,11 để biết tọa độ 2 đầu Line Dim, mã 13,14 để biết tọa độ 2 đỉnh ExtentLine, từ đó có thể chỉnh sửa lại Dim.
Ví dụ :
Từ dxf 10,11 => vectơ hướng Dim (v1) + vectơ ExtLine (v2)
Từ điểm pick => Xác định đường song song với v1, cắt 2 đường ExtLine tại 2 điểm giao
=> Sửa mã dxf 13,14 thành 2 điểm giao vừa tìm được
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#7 quoctuan903

quoctuan903

    biết vẽ arc

  • Members
  • PipPip
  • 42 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 15 February 2012 - 07:41 PM

nhân tiện nói chuyện về dim, các anh cho em hỏi có lisp nào gióng đường kích thước không, không phải chân dim đâu nhé, đại loại như có 1 đống dim có đường gióng nằm song song mà mình lại muốn nó về thẳng hàng hết (như vẽ dimcontinous ấy) tại vị trí theo ý muốn, hoặc trước nó đã thẳng hàng rồi mà mình lại không muốn nó ở chỗ ấy mà muốn nó ra chỗ khác cơ, có lisp nào như vậy không các anh?
  • 0