Đến nội dung


Hình ảnh
* * * - - 17 Bình chọn

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)


  • Please log in to reply
2851 replies to this topic

#621 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 10 December 2010 - 11:14 AM

Hê hê Bác Bình già nên lẫn rồi đường polyline entity type là LWPOLYLINE.

Chớ vội cười. Không phải Bác Bình lẫn, mà kiến thức của bạn chưa đủ.
Có 2 loại đường Pline
- Polyline (loại này lại được chia thành 2 loại 2D và 3D) là loại đường pline kiểu cũ, được tạo ra bởi các bản cad đời thấp.
- LWpolyline (loại này mình chưa biết có chia thành 2 loại như trên không vì chưa kiểm tra) Có lẽ do cách mô tả record đối tượng của pline loại cũ gặp 1 số hạn chế khi sử dụng nên các bản cad đời mới đưa ra loại pline mới này. nhưng đồng thời vẫn hỗ trợ loại pline kiểu cũ. ta không thể tạo ra Polyline bằng cách vẽ bằng lệnh PL mà chỉ có thể vẽ được LWPolyline trên các bản cad đời cao. có lẽ Bác Bình không sử dụng các bản cad đời mới nên không bít cái này. Tuy vậy ta vẫn có thể tạo Polyline kiểu cũ bằng hàm entmake trên các bản cad đời mới.
  • 2

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#622 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 10 December 2010 - 11:17 AM

Hê hê Bác Bình già nên lẫn rồi đường polyline entity type là LWPOLYLINE.

:undecided: Bạn trẻ quá nên không biết là có loại đường polyline entity type là POLYLINE
Bạn Xem cái này : đường polyline entity type là POLYLINE
  • 1

#623 phamngoctukts

phamngoctukts

    biết lệnh adcenter

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

Đã gửi 10 December 2010 - 11:23 AM

Bạn trẻ quá nên không biết là có loại đường polyline entity type là POLYLINE
Bạn Xem cái này : đường polyline entity type là POLYLINE

Hê hê đúng là mình trẻ người non dạ mong các Bác bỏ qua cho. Hì hì cám ơn bác giúp em mở rộng tầm mắt. Quả thực là em chưa dùng thằng 2D polyline này bao giờ. Để vẽ nó thì dùng lệnh gì vậy Bác mà thằng POLYLINE này khác thằng LWPOLYLINE ở điểm gì vậy bác có thể cho em biết đưộc không???
  • 1
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!

#624 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 10 December 2010 - 01:47 PM

Hê hê đúng là mình trẻ người non dạ mong các Bác bỏ qua cho. Hì hì cám ơn bác giúp em mở rộng tầm mắt. Quả thực là em chưa dùng thằng 2D polyline này bao giờ. Để vẽ nó thì dùng lệnh gì vậy Bác mà thằng POLYLINE này khác thằng LWPOLYLINE ở điểm gì vậy bác có thể cho em biết đưộc không???

Hề hề hề,
Quả thật là mình cũng chả phân biệt được cũ với mới như các bác đã phân tích đâu, chỉ biết rằng có hai cách quản lý thằng polyline này mà thôi. Một kiểu chắc là cũ như ThaiStreetsz đã nói, là kiểu coi polyline như một tổ hợp của các đối tượng đơn là các vertex và phân đoạn polyline, còn cách khác là coi polyline như một đối tượng đơn bao gồm đầy đủ các vertex và các đặc tính khác .
Hai cách này về bản chất thì cũng giống nhau nhưng cách thứ hai thì thuận tiện cho việc truy xuất các thuộc tính của polyline hơn.
Ở cách trước để truy xuất các thuộc tính của polyline thì phải sử dụng hàm entnext để mò tới từng đối tượng có trong nó. Khi đó trong mà dxf của polyline có thêm mã 66.
Tại sao như vậy thì là tại thằng Cad nó nghĩ ra thế, mình chỉ biết xài mà chả biết tại sao cả. Hề hề hề...
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#625 chuonchuontl

chuonchuontl

    Chưa sử dụng CAD

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

Đã gửi 10 December 2010 - 02:41 PM

Mọi người cho mình hỏi. Mình đang dùng Cad 2007, khi cài lisp catdim thì thấy báo lỗi: "Unhandled Access Violation Writting 0x0014 Exception at 76f0fc47h", nhưng cài vào Cad 2004 thì vẫn dùng được. Mình cài thử trimdim hay cutdim cũng ra lỗi như vậy. Giúp mình với.
  • 0

#626 pfievxd

pfievxd

    biết vẽ spline

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

Đã gửi 14 December 2010 - 10:03 AM

Có bác nào có mã của con virut acad ko ah ? Cho em xin với, em đang nghiên cứu xem khả năng của lisp với tới được đến đâu
;----------------------------------------------------
Xin cam đoan với các bác là em chỉ đơn thuần có mong muốn học hỏi, ko có ý định phá hoại j đâu ah
  • 0

#627 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 14 December 2010 - 10:45 AM

Có bác nào có mã của con virut acad ko ah ? Cho em xin với, em đang nghiên cứu xem khả năng của lisp với tới được đến đâu
;----------------------------------------------------
Xin cam đoan với các bác là em chỉ đơn thuần có mong muốn học hỏi, ko có ý định phá hoại j đâu ah

Ai biết <_< :undecided:
  • 0

#628 phamngoctukts

phamngoctukts

    biết lệnh adcenter

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

Đã gửi 14 December 2010 - 11:19 AM

Có bác nào có mã của con virut acad ko ah ? Cho em xin với, em đang nghiên cứu xem khả năng của lisp với tới được đến đâu
;----------------------------------------------------
Xin cam đoan với các bác là em chỉ đơn thuần có mong muốn học hỏi, ko có ý định phá hoại j đâu ah

Mình đọc đâu đó trên diễn đàn này code của con virus sâu acad rồi thì phải. Hình như trong mục trang tin
A đây rồi: http://www.cadviet.c...tent/view/13/1/
  • 1
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!

#629 pfievxd

pfievxd

    biết vẽ spline

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

Đã gửi 14 December 2010 - 11:37 AM

Ai biết <_< :wub:

Hì, bác Tue_NV cẩn thận quá rồi ^^
;----------------------------------------
:undecided: các bác cho e hỏi thêm câu nữa nhé, em đang nghịch ở phần hộp thoại DCL, nhưng cái phần image_button chưa được như ý, cụ tỉ nó như thế này : cái hình ảnh do file sld nó ko được vừa vặn so với cái khung của image, làm thế nào để cho khớp với nhau được bây h? cái này có liên quan gì với kíchthước của màn hình máy tính ko nhỉ ?
Em có ý tưởng đưa hình ảnh vào image button, ah` là ảnh bình thường chứ ko phải vẽ trên Cad đâu ah, liệu có thể? em thử nhét vào Cad gõ mslide thì hình ảnh nó nhạt nhòa. hX!
;----------------------------------------
Hì, lại là pfievxd đây, cái vấn đề trên e đang nghiên cứu sử dụng userform của VBA để thay thế DCL, nhớ là đã đọc ở đâu đó trên diễn đàn về sử dụng hàm nentsel và chọn khung lớn nhất trong block xref, chẹp nhưng mà có đến hơn 150 trang, lần mò xem được vài chục trang là nản, có bác nào từng động đến vấn đề này cho e xin cái link với...!
  • 0

#630 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 107 (tàm tạm)

Đã gửi 16 February 2011 - 01:50 PM

Các anh cho em hỏi em muốn kiểm tra 1 file vlx đã appload chưa thì dùng hàm gì ạ?
Vì sao file .lsp đã appload mình appload tiếp thì không lỗi, mà file .vlx đã appload rồi mình appload tiếp thì lại báo lỗi ; error: LISP application is already loaded tkcg nhỉ?
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#631 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 107 (tàm tạm)

Đã gửi 19 February 2011 - 07:08 PM

Các anh cho em hỏi em muốn kiểm tra 1 file vlx đã appload chưa thì dùng hàm gì ạ?
Vì sao file .lsp đã appload mình appload tiếp thì không lỗi, mà file .vlx đã appload rồi mình appload tiếp thì lại báo lỗi ; error: LISP application is already loaded tkcg nhỉ?

Chắc mọi người không quan tâm vấn đề này nên không thấy ai trả lời giúp.
May là em search trên các diễn đãn khác nên cũng đã trả lời được câu hỏi của mình rồi.
Hàm (vl-vlx-loaded-p appname) kiểm tra file appname.vlx đã được appload chưa.
Hàm (vl-list-loaded-vlx) trả lại list chứa tấc cả các appname đã được appload.
  • 1

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#632 pfievxd

pfievxd

    biết vẽ spline

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

Đã gửi 26 February 2011 - 07:56 PM

Thế này các bác ah, thường là em viết 1 dòng chữ nào đó trên cad vẫn dùng (Command "TEXT" ..., vẫn luôn bị vướng trong 2 trường hợp style hiện hành có chiều cao chữ =0 và khác 0, vì như thế sẽ phải viết đoạn sau của lệnh trên khác đi, thế nên thường thì em cứ tạo cho nó 1 kiểu chữ cho chắc, chẹp, nói chung là giờ thấy ko hợp lý lắm nên muốn hỏi các bác xem cad nó có lưu giá trị chiều cao chữ của style hiện hành ko ah? Em search thử rồi nhưng chưa ra
  • 1

#633 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 26 February 2011 - 10:43 PM

Thế này các bác ah, thường là em viết 1 dòng chữ nào đó trên cad vẫn dùng (Command "TEXT" ..., vẫn luôn bị vướng trong 2 trường hợp style hiện hành có chiều cao chữ =0 và khác 0, vì như thế sẽ phải viết đoạn sau của lệnh trên khác đi, thế nên thường thì em cứ tạo cho nó 1 kiểu chữ cho chắc, chẹp, nói chung là giờ thấy ko hợp lý lắm nên muốn hỏi các bác xem cad nó có lưu giá trị chiều cao chữ của style hiện hành ko ah? Em search thử rồi nhưng chưa ra

Bạn xem cái này, mục 3 và vài bài reply bên dưới
http://www.cadviet.c...1&mode=threaded
  • 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


#634 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 26 February 2011 - 11:12 PM

Thế này các bác ah, thường là em viết 1 dòng chữ nào đó trên cad vẫn dùng (Command "TEXT" ..., vẫn luôn bị vướng trong 2 trường hợp style hiện hành có chiều cao chữ =0 và khác 0, vì như thế sẽ phải viết đoạn sau của lệnh trên khác đi, thế nên thường thì em cứ tạo cho nó 1 kiểu chữ cho chắc, chẹp, nói chung là giờ thấy ko hợp lý lắm nên muốn hỏi các bác xem cad nó có lưu giá trị chiều cao chữ của style hiện hành ko ah? Em search thử rồi nhưng chưa ra

lấy chiều cao mặc định của textstyle hiện hành:
(cdr (assoc 40 (tblsearch "style" (getvar "textstyle"))))
PS: Sao bạn không xây dựng 1 hàm con để viết text bằng hàm entmake nhỉ. Ưu điểm là chạy nhanh hơn dùng command rất nhiều, không fụ thuộc vào các biến hệ thống liên quan đến textstyle, layer, color, width factor... và quan trọng là chẳng bao giờ fải lăn tăn về chiều cao chữ.
đây là hàm Maketext của mình, bạn có thể tham khảo và rút gọn nó cho fù hợp với nhu cầu của bạn.

(defun MakeText (point string Height Ang justify Style Layer Color xdata / Lst); Ang: Radial
(setq Lst (list '(0 . "TEXT")
(cons 8 (if Layer Layer (getvar "Clayer")))
(cons 62 (if Color Color 256))
(cons 10 point)
(cons 40 Height)
(cons 1 string)
(if Ang (cons 50 Ang))
(cons 7 (if Style Style (getvar "Textstyle")))
(cons -3 (if xdata (list xdata) nil)))
justify (strcase justify))
(cond ((= justify "C") (setq Lst (append Lst (list (cons 72 1) (cons 11 point)))))
((= justify "R") (setq Lst (append Lst (list (cons 72 2) (cons 11 point)))))
((= justify "M") (setq Lst (append Lst (list (cons 72 4) (cons 11 point)))))
((= justify "TL") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 3)))))
((= justify "TC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 3)))))
((= justify "TR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 3)))))
((= justify "ML") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 2)))))
((= justify "MC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 2)))))
((= justify "MR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 2)))))
((= justify "BL") (setq Lst (append Lst (list (cons 72 0) (cons 11 point) (cons 73 1)))))
((= justify "BC") (setq Lst (append Lst (list (cons 72 1) (cons 11 point) (cons 73 1)))))
((= justify "BR") (setq Lst (append Lst (list (cons 72 2) (cons 11 point) (cons 73 1))))))
(entmakex Lst));end

  • 1

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#635 pfievxd

pfievxd

    biết vẽ spline

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

Đã gửi 27 February 2011 - 07:45 AM

Hì, em dùng Command vì nó chỉ có 1 dòng lệnh đơn giản -> nhìn gọn hơn và dễ đọc hơn trong 1 chương trình lớn :D; okie, có lẽ chuyển sang dùng entmake cho đỡ lăn tăn vậy/ Ah`,cách dùng (if Color Color 256) có vẻ mới mẻ đây
  • 0

#636 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 12 March 2011 - 02:42 PM

Mình có làm 1 Lisp để chỉnh kích thuớc Dim và Text trong bản vẽ dựa vào kích thước Block khung tên như vầy :

http://www.cadviet.c...les/3/ftnew.lsp

					;Can chinh text va dim
(defun C:fdt (/ maublk tenblk loai j ssblk blkname OldEcho OldOs)
(vl-load-com)
(setq OldEcho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "undo" "be")
(princ "\n From nguyentuyen6 @CadViet ")
(princ "\n Cai Express-Tools truoc khi su dung!!!")
;chon mau blok khung ten
(setq maublk (car (entsel "\nChon Block khung ten: "))
tenblk (cdr (assoc 2 (entget maublk)))
loai (cdr (assoc 0 (entget maublk)))
)
;lay tap hop tat ca cac blk khung ten
(setq ssblk (ssget "x" (list (cons 0 loai) (cons 2 tenblk)))
j 0
)
; Dat ty le
(setq
tileft (cond (tileft)
(1)
)
tileftold tileft
tileft (getreal
(strcat "\nChon ty le <" (rtos tileftold 2 2) ">: ")
)
)
(if (= tileft nil)
(setq tileft tileftold)
)
; xu ly tap blk khung ten
(command "ZOOM" "e")
(while (< j (sslength ssblk))
  
(setq blkname (ssname ssblk j))
(XuLyTextDim blkname)
(setq j (1+ j))
)
; thong bao so blk khten
(princ (strcat "\nDa Xu Ly : < "
(rtos (sslength ssblk) 2 0)
" > Khung Ten"
)
)
;Tra lai bien he thong
(command "undo" "e")
(setvar "cmdecho" OldEcho)
(princ "\n...Done...")
(princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;
(defun BatDau ()
(setq OldOs (getvar "osmode"))
(setvar "osmode" 0)
)
(defun KetThuc () (setvar "osmode" OldOs) (princ))
(defun moddxf (dxf chdxf ss)
(entmod
(subst (cons dxf chdxf) (assoc dxf (entget ss)) (entget ss))
)
)

;;;;;;;;;;;;;;;;;;;;;;;;;
(defun XuLyTextDim (khungxuly / Rec pt1 pt2
rpt1 rpt2 rpt3 rpt4 dis12 dis14
dis toadodinh caodim tilechu textgap
dimxtend i el1 el ssd
en
)
(setq Rec (acet-ent-geomextents khungxuly)
pt1 (nth 0 Rec) ;lay dinh *-----pt2
pt2 (nth 1 Rec) ;lay dinh | khung |
i 0
) ;setq pt1-----*
;-----acet-ent-geomextents:diem thap nhat trai va cao nhat phai, ve hcn
(BatDau)
(command "RECTANG" pt1 pt2)
(KetThuc)
(setq el1 (entlast)) ;el1
;-----lay tile, mac dinh la :1

;-----lay dinh HCN = acet-geom-vertex-list
(setq toadodinh (acet-geom-vertex-list el1) ; rpt4----rpt3
rpt1 (nth 0 toadodinh) ;lay dinh | el1 |
rpt2 (nth 1 toadodinh) ;lay dinh rpt1----rpt2
rpt3 (nth 2 toadodinh) ;lay dinh
rpt4 (nth 3 toadodinh) ;lay dinh
dis12 (distance rpt1 rpt2)
dis14 (distance rpt1 rpt4)
) ;setq
;----- Chia truong hop khung ngang va khung doc
(if (> dis12 dis14)
(setq caodim (* tileft (/ dis14 150))) ;T
(setq caodim (* tileft (/ dis12 150))) ;F
) ;if
(setq textgap (/ caodim 2) ; k/c tu Text den duong Dim
dimxtend (/ caodim 2) ;k/c dau dim
tilechu (* caodim 1.2) ; cao Text so voi cao Dim(text)
)
;-----
(command "ERASE" el1 "") ;xoa hcn
(princ (strcat "\nDim:<"
(rtos caodim 2 0)
">. Text:<"
(rtos tilechu 2 0)
">."
)
)
;======================= M A I N =============================
(setq ssd (ssget "_W" rpt2 rpt4 '((0 . "DIMENSION,TEXT"))))
;;;;;;;;;;;;;;;;;;;;
(while (< i (sslength ssd))
(setq en (ssname ssd i))
;---- Text -----
(if (= (cdr (assoc 0 (entget en))) "TEXT")
(moddxf 40 tilechu en)
) ;if
;-- DIMENSION -----
(if (= (cdr (assoc 0 (entget en))) "DIMENSION")
(progn
(setq el (vlax-ename->vla-object en))
(vlax-put-property el 'ScaleFactor 1) ; chinh Scalefactor
(vlax-put-property el 'textheight caodim)
; chieu cao text trong dim
(vlax-put-property el 'textgap textgap)
; k/c tu Text den duong Dim
(vlax-put-property el 'ArrowheadSize dimxtend) ; do lon mui ten
(vlax-put-property el 'DimensionLineExtend dimxtend)
;k/c 2 ben duong dim
(vlax-put-property el 'ExtensionLineExtend dimxtend)
;k/c duong giong dim -> duong dim
(vlax-put-property el 'Arrowhead1Block "ArchTick")
; loai mui ten
(vlax-put-property el 'Arrowhead2Block "ArchTick")
; loai mui ten
) ;progn
) ;if
(setq i (1+ i))
) ;while
;---------------

) ;defun

Vấn đề là: Khi chạy lisp ở 1 vài bản vẽ bị lỗi ở cái hàng ( gần cuối lisp )

(vlax-put-property el 'DimensionLineExtend dimxtend)
;k/c 2 ben duong dim
(vlax-put-property el 'ExtensionLineExtend dimxtend)
;k/c duong giong dim -> duong dim

Cad nó báo như sau:
ActiveX Server returned the error: unknown name: DIMENSIONLINEEXTEND
Tất cả các Dim trong bản vẽ của mình đều cùng dùng 1 loại DimStyle
Mình không hiểu tại sao nó lại bị như vậy!!!????. Bác nào giúp mình chỗ này với
p/s: Nếu xóa bỏ 2 dòng kia đi thì lisp chạy băng băng
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#637 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 12 March 2011 - 03:40 PM

Mình có làm 1 Lisp để chỉnh kích thuớc Dim và Text trong bản vẽ dựa vào kích thước Block khung tên như vầy :

http://www.cadviet.c...les/3/ftnew.lsp
.....
DIMENSIONLINEEXTEND[/b][/size]
Tất cả các Dim trong bản vẽ của mình đều cùng dùng 1 loại DimStyle
Mình không hiểu tại sao nó lại bị như vậy!!!????. Bác nào giúp mình chỗ này với
p/s: Nếu xóa bỏ 2 dòng kia đi thì lisp chạy băng băng

Bạn thử cái này nghe :
Tạo 1 hàm con kiểm tra xem cái DIMENSION xem nó có chưa thuộc tính Pro không? Nếu có thì gán luôn cho nó thuộc tính Pro, nếu không có thì bỏ qua bằng hàm con sau :

(defun Ktra_ganPro(obj pro gtrigan)
(if (vlax-property-available-p obj pro)
(vlax-put-property obj pro gtrigan)
)
)

Trong chương trình chính thì gọi như sau : (ví dụ thuộc tính scalefactor)
(Ktra_ganPro el 'scalefactor 1.0)
Các thuộc tính khác gọi hàm Ktra_ganPro để kiểm tra và gán tương tự
......
Chúc thành công. Nếu làm không được thì post cái file .dwg và file .lsp mà bạn làm lên đây, Tue_NV xem thế nào nhé.
  • 1

#638 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 12 March 2011 - 03:52 PM

Mình có làm 1 Lisp để chỉnh kích thuớc Dim và Text trong bản vẽ dựa vào kích thước Block khung tên như vầy :

http://www.cadviet.c...les/3/ftnew.lsp

Vấn đề là: Khi chạy lisp ở 1 vài bản vẽ bị lỗi ở cái hàng ( gần cuối lisp )

(vlax-put-property el 'DimensionLineExtend dimxtend)
;k/c 2 ben duong dim
(vlax-put-property el 'ExtensionLineExtend dimxtend)
;k/c duong giong dim -> duong dim

Cad nó báo như sau:
ActiveX Server returned the error: unknown name: DIMENSIONLINEEXTEND
Tất cả các Dim trong bản vẽ của mình đều cùng dùng 1 loại DimStyle
Mình không hiểu tại sao nó lại bị như vậy!!!????. Bác nào giúp mình chỗ này với
p/s: Nếu xóa bỏ 2 dòng kia đi thì lisp chạy băng băng

Hề hề hề,
Mình không rành lắm về cái thằng ActiveX này , nhưng mình nghĩ bạn có thể kiểm tra các properties của nó bằng hàm (vlax-dump-object obj) thử coi xem cái đối tượng dim trong ActiveX của bạn có các thuộc tính đó không mà. Nếu không có thì nó báo lỗi là chí phải. Còn tại sao nó không có thì phải hỏi thằng ActveX của bạn chứ mình hổng biết.
Hề hề hề,...
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#639 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 12 March 2011 - 04:45 PM

Bạn thử cái này nghe :
Tạo 1 hàm con kiểm tra xem cái DIMENSION xem nó có chưa thuộc tính Pro không? Nếu có thì gán luôn cho nó thuộc tính Pro, nếu không có thì bỏ qua bằng hàm con sau :

(defun Ktra_ganPro(obj pro gtrigan)
(if (vlax-property-available-p obj pro)
(vlax-put-property obj pro gtrigan)
)
)

Trong chương trình chính thì gọi như sau : (ví dụ thuộc tính scalefactor)
(Ktra_ganPro el 'scalefactor 1.0)
Các thuộc tính khác gọi hàm Ktra_ganPro để kiểm tra và gán tương tự
......
Chúc thành công. Nếu làm không được thì post cái file .dwg và file .lsp mà bạn làm lên đây, Tue_NV xem thế nào nhé.


E thử làm như bạn và kết quả nó chạy được.

Nhưng mà cái chỗ có hay không có thuộc tính PRO đó có lẽ không phải vấn đề. Bởi e dùng 1 lisp khác tương tự thì nó lại thay đổi đc mà không cần phải kiểm tra bác ạ. Bác thử kiểm với bản vẽ này nhé

http://www.cadviet.c...drawing2_12.dwg

Rồi dùng 2 lisp sau thấy khác biệt:
Dùng trước: http://www.cadviet.c...s/3/ftnew_1.lsp
Dùng sau: http://www.cadviet.c...pfiles/3/ft.lsp

Thì thấy cái sau chỉnh đc tất.

Các bác xem hộ em với nhé !!
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#640 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 12 March 2011 - 04:47 PM

Mình có làm 1 Lisp để chỉnh kích thuớc Dim và Text trong bản vẽ dựa vào kích thước Block khung tên như vầy :

http://www.cadviet.c...les/3/ftnew.lsp
.............

Vấn đề là: Khi chạy lisp ở 1 vài bản vẽ bị lỗi ở cái hàng ( gần cuối lisp )

(vlax-put-property el 'DimensionLineExtend dimxtend)
;k/c 2 ben duong dim
(vlax-put-property el 'ExtensionLineExtend dimxtend)
;k/c duong giong dim -> duong dim

Cad nó báo như sau:
ActiveX Server returned the error: unknown name: DIMENSIONLINEEXTEND
Tất cả các Dim trong bản vẽ của mình đều cùng dùng 1 loại DimStyle
Mình không hiểu tại sao nó lại bị như vậy!!!????. Bác nào giúp mình chỗ này với
p/s: Nếu xóa bỏ 2 dòng kia đi thì lisp chạy băng băng

Với thằng dimRadius hay dimDiameter thì làm gì có DimensionLineExtend nên Cad báo lỗi.
Bạn thử xóa mấy thằng đó đi, chỉ để dimLinear xem sao ?
  • 2